Acabo de publicar un paquete Nuget que permite configurar no solo las propiedades de primer nivel, sino también las propiedades anidadas en el objeto dado en cualquier profundidad.
Aquí esta el paquete
Establece el valor de una propiedad de un objeto por su ruta desde la raíz.
El objeto puede ser un objeto complejo y la propiedad puede ser una propiedad anidada profunda de varios niveles o puede ser una propiedad directamente debajo de la raíz. ObjectWriter
encontrará la propiedad utilizando el parámetro de ruta de propiedad y actualizará su valor. La ruta de propiedad son los nombres adjuntos de las propiedades visitadas desde la raíz hasta la propiedad del nodo final que queremos establecer, delimitadas por el parámetro de cadena delimitador.
Uso:
Para configurar las propiedades directamente debajo de la raíz del objeto:
Es decir. LineItem
la clase tiene una propiedad int llamadaItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
Para configurar la propiedad anidada en varios niveles debajo de la raíz del objeto:
Es decir. Invite
La clase tiene una propiedad llamada State
, que tiene una propiedad llamada Invite
(de tipo Invitar), que tiene una propiedad llamada Recipient
, que tiene una propiedad llamadaId
.
Para hacer las cosas aún más complejas, la State
propiedad no es un tipo de referencia, es un struct
.
Aquí es cómo puede establecer la propiedad Id (al valor de cadena de "perspectiva") en la parte inferior del árbol de objetos en una sola línea.
Invite invite = new Invite();
ObjectWriter.Set(invite, "State_Invite_Recipient_Id", "outlook", delimiter: "_");
var val = Convert.ChangeType(propValue, propInfo.PropertyType);
fuente: devx.com/vb2themax/Tip/19599