zoukankan      html  css  js  c++  java
  • C# 简化优化if/switch 表驱动法

    表示这个很强大

    字典加反射,搞定多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(); } } } }
  • 相关阅读:
    四十八.监控概述 、 Zabbix基础 、 Zabbix监控服务
    123D
    bzoj3879
    bzoj1699
    LA6878
    uoj#149
    687C
    codeforces round #424 div2
    803E
    713C
  • 原文地址:https://www.cnblogs.com/Events/p/3929749.html
Copyright © 2011-2022 走看看