我有一个应用程序,需要检查是否使用32位或64位驱动程序dll。返回值是32/64位dll的驱动程序。认为我需要做一个通用类。有人知道要这样做吗?
public Driver_64/Driver_32 Connect()
{
if (Environment.Is64BitOperatingSystem)
{
Driver64bit.driver drv = new Driver64bit.driver(ip,parm)
return drv;
}
else
{
Driver32bit.driver drv = new Driver32bit.driver(ip,parm)
return drv;
}
}
最佳答案
基本上,将此实现细节隐藏在接口后面:
public interface IDriver {
void DoSomething(...);
//...
}
如果控制类型,则让
Driver64bit.driver
和Driver32bit.driver
实现该接口;否则,添加类以对此进行封装:internal sealed class Driver32 : IDriver {
private readonly Driver32bit.driver driver;
public Driver32(Driver32bit.driver driver) {
this.driver = driver;
}
void IDriver.DoSomething(...) {
driver.DoSomething(...);
}
}
(和
Driver64
显然)现在只需返回
IDriver
:public IDriver Connect() {
// ...
}
返回
drv
还是new Driver32(drv)
/ new Driver64(drv)
,具体取决于是否可以使类型实现接口而不是添加包装器类型。您也可以使用基类,但是接口通常更灵活。