simplemente he publicado un paquete Nuget que permite la creación de no sólo las primeras propiedades de nivel pero propiedades también anidados en el objeto dado en cualquier profundidad.
Aquí es the package
establece el valor de una propiedad de un objeto por su camino desde la raíz.
El objeto puede ser un objeto complejo y la propiedad puede ser propiedad anidada profunda de niveles múltiples o puede ser una propiedad directamente debajo de la raíz. ObjectWriter
encontrará la propiedad usando el parámetro ruta de propiedad y actualizará su valor. La ruta de la propiedad es el nombre adjunto de las propiedades visitadas desde la raíz hasta la propiedad del nodo final que queremos establecer, delimitada por el parámetro de la cadena del delimitador.
Uso:
Para configurar las propiedades directamente en la raíz del objeto:
Ie. LineItem
clase tiene una propiedad llamada int ItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
Para la creación de la propiedad anidada múltiples niveles por debajo de la raíz del objeto:
Ie. Invite
clase tiene una propiedad llamada State
, que tiene una propiedad llamada Invite
(de Invitar tipo), que tiene una propiedad llamada Recipient
, que tiene una propiedad llamada Id
.
Para hacer las cosas aún más complejas, la propiedad State
no es un tipo de referencia, es un struct
.
Aquí es cómo se puede establecer la propiedad Id (a 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: "_");
Si no se trata con todas las cadenas Es posible que desee convertir los datos en primer lugar: 'var = val Convert.ChangeType (propValue, propInfo.PropertyType);' fuente: http://www.devx.com/vb2themax/Tip/19599 – LostNomad311
alternativamente, yo u puede usar 'obj.GetType(). GetProperty ("Nombre") ?. GetSetMethod() ?. Invoke (...)' – tecfield