C # класс, представляющий устройство USB - PullRequest
0 голосов
/ 12 февраля 2010

Я пишу класс оболочки в C # для устройства USB (используя P / Invoke для связи с ним). Устройство должно быть отправлено открытое сообщение перед использованием и закрытый метод, когда это сделано с. В моем конструкторе я хочу попытаться открыть устройство и вернуть null, если по какой-либо причине этот вызов не удался. Я также напишу Dispose(), который вызывает метод close на устройстве.

Это разумный способ его кодирования? Или у меня должен быть отдельный ConnectToDevice метод?

Поместив его в конструктор, я надеюсь, что пользователи моего класса могут просто написать:

USBDevice myDevice = new USBDevice()

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

1 Ответ

2 голосов
/ 12 февраля 2010

Если ваш конструктор терпит неудачу, ссылка всегда будет нулевой. Однако, если вы выделили несколько доступных ресурсов до возникновения ошибки, вызывающий не сможет вызвать Dispose для экземпляра, поскольку у него нет ссылки на него. Таким образом, если вы хотите сделать это в конструкторе, вы должны убедиться, что конструктор завершится неудачно.

Для простоты, я бы, вероятно, вместо этого использовал метод Connect.

...