反射替换工厂模式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"/>
知识兔