代表USB设备的C#类

时间:2010-02-12 11:24:39

标签: c# constructor pinvoke unmanaged

我正在用C#为USB设备编写一个包装类(使用P / Invoke与它通信)。设备需要在使用前发送一个打开的消息,并在完成后发送一个close方法。在我的构造函数中,我想尝试打开设备并返回null如果该调用因任何原因失败。我还会写一个Dispose()来调用设备上的close方法。

这是一种合理的编码方式吗?或者我应该有一个单独的ConnectToDevice方法吗?

通过将它放在构造函数中,我希望我的类的用户可以简单地写:

USBDevice myDevice = new USBDevice()

if (myDevice != null) {
  myDevice.PerformAction();
  myDevice.Dispose();
  myDevice = null;
}

1 个答案:

答案 0 :(得分:2)

如果构造函数失败,则引用将始终为null。但是,如果在错误之前已经分配了一些可处理资源,则调用者无法在实例上调用Dispose,因为他没有引用它。因此,如果要在构造函数中执行此操作,则需要确保构造函数正常失败。

为了简单起见,我可能会使用Connect方法。

相关问题