C#反射的应用
由于最近主要做RFID设备的软件中间件开发,
期间遇到了一个问题,
就是RFID设备非常多,而且会不断增加,
上层应用软件的开发人员希望能提供统一的接口,这样他们就不需要在硬件设备改变时做太多的修改
经过一番考虑后,我决定在接口程序中采用先装载设备dll,再利用反射创建对象的方法来实现上述功能
下面是我在类工厂中实现创建对象的函数
1
public iRfidMidWare CreateObject(string pDeviceName,string pDllName)
2
{
3
iRfidMidWare mInterface = null;
4
try
5
{
6
string mpath = Application.StartupPath+"\\"+pDllName;
7
Assembly asm = Assembly.LoadFrom(mpath);
8
//string mDevice = "tttt."+pDeviceName;
9
Type tp = asm.GetType(pDeviceName);
10
mInterface = (iRfidMidWare)System.Activator.CreateInstance(tp);
11
}
12
catch(TypeLoadException e)
13
{
14
Console.WriteLine(e.Message);
15
}
16
return mInterface;
17
}
18
public iRfidMidWare CreateObject(string pDeviceName,string pDllName) 2
{3
iRfidMidWare mInterface = null;4
try5
{6
string mpath = Application.StartupPath+"\\"+pDllName;7
Assembly asm = Assembly.LoadFrom(mpath);8
//string mDevice = "tttt."+pDeviceName;9
Type tp = asm.GetType(pDeviceName);10
mInterface = (iRfidMidWare)System.Activator.CreateInstance(tp);11
}12
catch(TypeLoadException e)13
{14
Console.WriteLine(e.Message);15
}16
return mInterface;17
}18

这样,在设备改变时,应用程序端只需要改变对象的参数就可以了,无需更改其它代码

浙公网安备 33010602011771号