反射应用

反射替换工厂模式switch--case

原代码:

public static IMonitorDeviceManager GetDeviceManager(string flag)
        {
            try
            {
                switch (flag)
                {
                    case "1":return new DBManager();break;
                    default:return null ;break;
                }
               
        }

修改后:

  public static IMonitorDeviceManager GetDeviceManager(string flag)
        {
            try
            {
               
                string dllfile = ConfigurationManager.AppSettings["dllfile"];//dll名称
                string dllclass = ConfigurationManager.AppSettings["dllclass"];//命名空间+类名
                Assembly assembly = Assembly.LoadFrom(dllfile);
                IMonitorDeviceManager obj = assembly.CreateInstance(dllclass) as IMonitorDeviceManager;
                return obj;
            }
            catch (Exception e)
            {
                Log.WriteError(e.Message);
                return null;
            }
        }

config

 <add key="dllfile" value="Camera.DB.dll"/>
<add key="dllclass" value="Camera.DCZY.DBManager"/>

 

posted @ 2019-10-17 16:06  萌橙  阅读(127)  评论(0编辑  收藏  举报