Я только что опубликовал пакет Nuget, который позволяет устанавливать не только свойства первого уровня, но и вложенные свойства в данном объекте на любой глубине.
Вот пакет
Устанавливает значение свойства объекта по его пути от корня.
Объект может быть сложным объектом, а свойство может быть многоуровневым вложенным свойством или может быть свойством непосредственно под корнем. ObjectWriter
найдет свойство, используя параметр свойства path, и обновит его значение. Путь свойства - это добавленные имена свойств, которые посещаются от корня до свойства конечного узла, которое мы хотим установить, ограниченные строковым параметром разделителя.
Использование:
Для настройки свойств непосредственно под корнем объекта:
Т.е.. LineItem
класс имеет свойство int с именем ItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
Для настройки вложенных свойств на нескольких уровнях ниже корня объекта:
* * Т.е. 1 022. У класса
Invite
есть свойство с именем
State
, у которого есть свойство с именем
Invite
(типа приглашения), у которого есть свойство с именем
Recipient
, у которого есть свойство с именем
Id
.
Чтобы сделать вещи еще более сложными, свойство State
не является ссылочным типом, это struct
.
Вот как вы можете установить свойство Id (строковое значение «outlook») внизу дерева объектов в одной строке.
Invite invite = new Invite();
ObjectWriter.Set(invite, "State_Invite_Recipient_Id", "outlook", delimiter: "_");