Я только что опубликовал пакет NuGet, что позволяет настраивать не только первые свойства уровня, но и вложенные свойства в данном объекте в любой глубине.
Здесь the package
Устанавливает значение свойства объекта по его пути от корня.
Объект может быть сложным объектом, а свойство может быть многоуровневым вложенным свойством или может быть свойством непосредственно под корнем. ObjectWriter
найдет свойство, используя параметр пути свойства и обновит его значение. Путь свойств - это добавленные имена свойств, которые были посещены от корня до свойства конечного узла, который мы хотим установить, ограниченным параметром строки разделителя.
Использование:
Для настройки свойств непосредственно в корневом каталоге объекта:
Ie. LineItem
класс имеет свойство, называемое Int ItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
для создания нескольких уровней вложенных свойств ниже корневого объекта:
Ie. Invite
класс имеет свойство State
, которое имеет свойство Invite
(типа приглашения), которое имеет свойство Recipient
, которое имеет свойство Id
.
Чтобы сделать вещи еще более сложными, свойство State
не является ссылочным типом, это struct
.
Вот как вы можете установить свойство Id (в строковое значение «outlook») в нижней части дерева объектов в одной строке.
Invite invite = new Invite();
ObjectWriter.Set(invite, "State_Invite_Recipient_Id", "outlook", delimiter: "_");
Если вы не имеете дело со всеми строками вы можете сначала конвертировать данные: var var = Convert.ChangeType (propValue, propInfo.PropertyType); ' источник: http://www.devx.com/vb2themax/Tip/19599 – LostNomad311
альтернативно, лет u может использовать 'obj.GetType(). GetProperty (« Name ») ?. GetSetMethod() ?. Invoke (...)' – tecfield