Перейти к содержанию

Разработка классов параметров для автоматической привязки

Для того, чтобы связыватель IOptions<T> работал правильно, существуют определенные требования к классам параметров.
Так как связыватель работает через рефлексию (reflection), неообходимо, чтобы класс параметров:

  • был неабстрактным;
  • имел конструктор по умолчанию.

Если класс удовлетворяет этим требованиям, связыватель перебирает свойства класса и выполняет привязку тех свойств, которых может. Привязываться будет свойство, которое:

  • является открытым;
  • имеет метод получения (get)
  • имеет метод установки или, для сложных типов, ненулевое значение по умолчанию;
  • не являющееся индексатором.

Также, для любого из нижеперечисленных интерфейсов, при условии, что свойство не проинициализированно, будет создан объект класса List<> (иначе будет заполнен существующий объект):

  • IReadOnlyList<>
  • IReadOnlyCollection<>
  • ICollection<>
  • IEnumerable<>

Причём, если IEnumerable<> было уже проинициализированно, привязка выполнена не будет.
Также будут проинициализированы поля словарей со строковыми ключами; поля следующих интерфейсов будут проинициализированы Dictionary<,> со строковым ключом:

  • IDictionary<,>
  • IReadOnlyDictionary<,>

Последнее обновление : 30 апреля 2023 г.
Дата создания : 30 сентября 2022 г.

Комментарии

Комментарии