Necesito recuperar todas las propiedades de un tipo anónimo que se pueden escribir.Obtener propiedades de lectura/escritura de tipo anónimo
por ejemplo:
var person = new {Name = "Person's Name", Age = 25};
Type anonymousType = person.GetType();
var properties = anonymousType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
El problema es que todas las propiedades tienen su propiedad CanWrite
false
. Esto se devuelve como verdadero para los tipos no anónimos.
También he intentado hacer una llamada a PropertyInfo.GetSetMethod()
que devuelve null
.
¿Cómo puedo verificar si la propiedad se puede escribir?
Editar: Quizás sea suficiente saber si un tipo es anónimo o no. ¿Cómo puedo averiguar si un tipo es anónimo usando la reflexión?
Hola, "is not always"? Podrías profundizar en eso un poco. También esperaba que se generara un método de configuración. ¿Es el compilador lo suficientemente inteligente como para generar un setter solo si se usa? - Gracias. –
¿También es posible saber si un tipo es anónimo usando la reflexión? –
Usted * no puede * usar un setter con un tipo anónimo generado por C# - como digo, siempre es inmutable. Para los tipos con nombre, tener o no un setter dependerá de la declaración, como se muestra en el ejemplo. En cuanto a detectar si un tipo fue creado por el compilador, hay otra pregunta SO sobre eso en alguna parte. Trataré de encontrarlo. –