0

Для работы с драйверами сетевого интерфейса GHI сначала необходимо позвонить Open(). Что значит открыть сетевой интерфейс? The documentation не говорит ничего, кроме вызова метода.Что значит открыть драйвер сетевого интерфейса?

E.g.

var wiFiRs9110 = new WiFiRS9110(
    SPI.SPI_module.SPI2, 
    GHI.Pins.G120.P1_10, 
    GHI.Pins.G120.P2_11, 
    GHI.Pins.G120.P1_9, 4000); 

wiFiRs9110.Open(); // What does this do? 

wiFiRs9110.EnableStaticIP(IpAddress, SubnetMask, GatewayAddress); 

ответ

1

Вы можете себе представить, что часть оборудования потребует некоторой инициализации, прежде чем его можно будет использовать.

Они могли решили интегрировать код из Open() в конструкторе и Close() в методе Dispose(), но затем:

  • Все параметры, которые влияют на как аппаратное обеспечение/драйвера/класс инициализируется должен быть передан в конструкторе (обработчики событий являются хорошим примером здесь, вы не хотите пропустить первое событие)
  • Вы не можете «отпустить» (или Close()) сетевой интерфейс без утилизации объекта, поэтому если вы хотите получить к нему доступ снова, вам придется снова передать те же параметры в новый экземпляр.
  • Если что-то пойдет не так, конструктору придется выбросить исключение. Имеет смысл использовать броузер конструктора при передаче недопустимых параметров и иметь метод Open(), который бросает, когда оборудование не отвечает.

Есть также некоторые менее очевидные проблемы с «началом» что-то внутри конструктора, который не может применяться к этим драйверам:

  • Интерфейсы не могут определять конструкторы, поэтому интерфейс не будет полностью представлять, что вы пытаетесь построить
  • При наследовании класса, который «начинается» из конструктора, если вы хотите, чтобы «начать по-другому», нет родительского конструктора вызвать

 Смежные вопросы

  • Нет связанных вопросов^_^