Разработка классов параметров для автоматической привязки¶
Для того, чтобы связыватель IOptions<T> работал правильно, существуют определенные требования к классам параметров.
Так как связыватель работает через рефлексию (reflection), неообходимо, чтобы класс параметров:
- был неабстрактным;
- имел конструктор по умолчанию.
Если класс удовлетворяет этим требованиям, связыватель перебирает свойства класса и выполняет привязку тех свойств, которых может. Привязываться будет свойство, которое:
- является открытым;
- имеет метод получения (
get) - имеет метод установки или, для сложных типов, ненулевое значение по умолчанию;
- не являющееся индексатором.
Также, для любого из нижеперечисленных интерфейсов, при условии, что свойство не проинициализированно, будет создан объект класса List<> (иначе будет заполнен существующий объект):
IReadOnlyList<>IReadOnlyCollection<>ICollection<>IEnumerable<>
Причём, если IEnumerable<> было уже проинициализированно, привязка выполнена не будет.
Также будут проинициализированы поля словарей со строковыми ключами; поля следующих интерфейсов будут проинициализированы Dictionary<,> со строковым ключом:
IDictionary<,>IReadOnlyDictionary<,>
Дата создания : 30 сентября 2022 г.