表示这个很强大

字典加反射,搞定多window的switch

    public partial class MainWindow : Window
{
Dictionary<string, Type> WindowList = new Dictionary<string, Type>();
public MainWindow()
{
InitializeComponent();
this.AddHandler(Button.ClickEvent, new RoutedEventHandler(Btn_Click));
LoadDic();
} void LoadDic()
{
Type decoratorType = typeof(DecoratorWindow);
Type viewboxType = typeof(ViewboxWindow);
Type valueType = typeof(ValueWindow);
Type lineType = typeof(LineWindow);
Type winStartType = typeof(WinStartWindow);
Type mp3Type = typeof(Mp3Window);
Type socketType = typeof(SocketWindow);
Type tagType = typeof(TagWindow);
Type txtType = typeof(TXTWindow);
Type QQType = typeof(QQWindow);
Type transformType = typeof(TransformWindow);
Type image3DWallType = typeof(Image3DWallWindow);
Type transType = typeof(TransWindow);
Type weatherType = typeof(WeatherWindow);
Type datagridType = typeof(DatagridWindow);
Type versionType = typeof(VersionWindow);
WindowList.Add("Decorator", decoratorType);
WindowList.Add("Viewbox", viewboxType);
WindowList.Add("Value", valueType);
WindowList.Add("Line", lineType);
WindowList.Add("WinStart", winStartType);
WindowList.Add("Mp3", mp3Type);
WindowList.Add("Socket", socketType);
WindowList.Add("Tag", tagType);
WindowList.Add("TXT", txtType);
WindowList.Add("QQ", QQType);
WindowList.Add("Transform", transformType);
WindowList.Add("Image3DWall", image3DWallType);
WindowList.Add("Trans", transType);
WindowList.Add("Weather", weatherType);
WindowList.Add("Datagrid", datagridType);
WindowList.Add("Version", versionType);
}
private void Btn_Click(object sender, RoutedEventArgs e)
{
Window window = (Window) Activator.CreateInstance(WindowList[(e.OriginalSource as Button).Tag.ToString()]);
window.ShowDialog();
}
}
}
    public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.AddHandler(Button.ClickEvent,new RoutedEventHandler(Button_Click));
} private void Button_Click(object sender, RoutedEventArgs e)
{
if ((e.OriginalSource as Button).Tag.ToString() == null) ;
else
{
          Window window = WindowList[(e.OriginalSource as Button).Tag.ToString()];  
switch ((e.OriginalSource as Button).Tag.ToString())
{
case "Decorator":
window = new DecoratorWindow();
break;
case "Viewbox":
window = new ViewboxWindow();
break;
case "Value":
window = new ValueWindow();
break;
case "Line":
window = new LineWindow();
break;
case "WinStart":
window = new WinStartWindow();
break;
case "Mp3":
window = new Mp3Window();
break;
case "Socket":
window = new SocketWindow();
break;
case "Tag":
window = new TagWindow();
break;
case "TXT":
window = new TXTWindow();
break;
case "QQ":
window = new QQWindow();
break;
case "Transform":
window = new TransformWindow();
break;
case "Image3DWall":
window = new Image3DWallWindow();
break;
case "Trans":
window Trans = new TransWindow();
break;
case "Weather":
window = new WeatherWindow();
break;
case "Datagrid":
window = new DatagridWindow();
break;
default:
break;
}
          window.ShowDialog();
}
}
}
}

C# 简化优化if/switch 表驱动法的更多相关文章

  1. C语言表驱动法编程实践

    数据压倒一切.如果选择了正确的数据结构并把一切组织的井井有条,正确的算法就不言自明.编程的核心是数据结构,而不是算法. ——Rob Pike  说明 本文基于这样的认识:数据是易变的,逻辑是稳定的. ...

  2. [经验] Win7减肥攻略(删文件不删功能、简化优化系统不简优化性能)

    [经验] Win7减肥攻略(删文件不删功能.简化优化系统不简优化性能) ☆心梦无痕☆ 发表于 2014-1-24 11:15:04 https://www.itsk.com/thread-316471 ...

  3. 大话设计模式C++版——表驱动法改造简单工厂

    上回<大话设计模式C++版——简单工厂模式>中指出了简单工厂模式的缺陷,即违背了开发—封闭原则,其主要原因是由于switch的判断结构的使用,使修改或添加新的对象时需要改动简单工厂类的代码 ...

  4. 黑盒测试用例设计方法&理论结合实际 -> 判定表驱动法

    一. 概念 判定表是分析和表达多逻辑条件下执行不同操作的情况的工具. 二. 判定表驱动法的应用 判定表的优点: a. 能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏.因此,利用判定表能 ...

  5. C++的表驱动法

    目的:使用表驱动法,替换复杂的if/else和switch/case语句. 说明:JS 等其他语言也都支持的. 表驱动发示例:http://blog.csdn.net/zhouyulu/article ...

  6. 编程模式(schema) —— 表驱动法(table-driven)

    使用表驱动法,而非繁琐冗长的 if/else, switch case(本身也代表一种代码坏味道),也是替身编程质量的重要手段, 表驱动法是一种编程模式(schema)-- 从表里面查找信息而不使用逻 ...

  7. (1)消灭初级程序员常用的多层if-else嵌套--------------【表驱动法】

    表驱动法 1.相信很多刚从事工作的程序员或一些初级程序员在写代码的时候会出现对一些逻辑判断写成多层if-else嵌套的经历,这种方式在一些简单的层次中运用起来确实可行,但对于一些大型项目逻辑判断比较多 ...

  8. 表驱动法在STM32中的应用

    1.概念 所谓表驱动法(Table-Driven Approach)简而言之就是用查表的方法获取数据.此处的"表"通常为数组,但可视为数据库的一种体现.根据字典中的部首检字表查找读 ...

  9. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

随机推荐

  1. Fedora Linux 下安装配置C开发环境Code::Blocks

    一.提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便 ...

  2. uva 11732 - strcmp() Anyone? 不错的Trie题

    题解:http://blog.csdn.net/u013480600/article/details/23122503 我的代码一直TLE,,,看了人家的之后,认为1.链式前向星比較好,2.*dept ...

  3. 【m从翻译os文章】写日志禁令Sqlnet.log和Listener.log

    写日志禁令Sqlnet.log和Listener.log 参考原始: How to Disable Logging to the Sqlnet.log and the Listener.log (Do ...

  4. pptv web前端面试题

    今天上午一考完试,就一直等待pptv的电话,结果下午就收到了pptv的通知(pptv的效率还是很不错的,之前面试官和我说在一到两周之内给回复,结果过了7天就给回复了,赞一个)因为我面试的是web前端( ...

  5. iOS8指纹识别TouchID

    苹果在2014年6月3日的WWDC2014开幕式上推出了新版iOS8系统,界面上iOS8与iOS7相比变化不大,只是在功能方面进行了完好.iOS8通知中心更加强大,支持消息直接回复操作,并支持Quic ...

  6. 多图真相:Adobe Dreamweaver CC 2014.1来了-体验卓越PSD提取和诸多精彩云功能!

     作为经典的web开发工具,DW此次版本号更新提供了更加丰富的云功能,是网页开发人员的利器! 直接发多图(来源:zoomla!逐浪CMS UED): watermark/2/text/aHR0cD ...

  7. flex网上办(苹果)桌面系统仿真

    1.有登录界面 2.能够载入app(每一个app是单独的swf),并可拖动app的图标互相叠加 3.桌面上显示的哪些APP与目录是依据登陆的用户信息.从webservice中读取的(名字.图标信息等) ...

  8. Java泛型之<T>

    这里不讲泛型的概念和基础知识,就单纯的就我的理解说一下泛型中的<T> 一. <T> 下面的一段码就可以简单使用了<T>参数,注释就是对<T>的解释. p ...

  9. sql,nosql

    1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成 ...

  10. 使用HtmlAgilityPack批量抓取网页数据

    原文:使用HtmlAgilityPack批量抓取网页数据 相关软件点击下载登录的处理.因为有些网页数据需要登陆后才能提取.这里要使用ieHTTPHeaders来提取登录时的提交信息.抓取网页  Htm ...