我有一个应用程序,需要检查是否使用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.driverDriver32bit.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),具体取决于是否可以使类型实现接口而不是添加包装器类型。

您也可以使用基类,但是接口通常更灵活。

07-25 21:05