Imagina lo siguiente
Un tipo T tiene un campo Empresa. Al ejecutar el siguiente método funciona perfectamente:
Type t = typeof(T);
t.GetProperty("Company")
Con la siguiente llamada me vuelvo nulo
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Alguien tiene una idea?
c#
reflection
getproperty
bindingflags
Boris Callens
fuente
fuente
Respuestas:
Ha sobrescrito los indicadores de búsqueda predeterminados; si especifica nuevos indicadores, debe proporcionar toda la información para poder encontrar la propiedad. Por ejemplo:
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
fuente
BindingFlags
a ellos, no habría forma de no usar los valores predeterminados. Es decir, no sería posible excluirPublic
propiedades o excluirInstance
propiedades. Decidieron que tomas los valores predeterminados o los anulas especificando exactamente lo que buscas.Necesitas agregar
BindingFlags.Public | BindingFlags.Instance
fuente
Gracias, esto realmente me ayudó en una pizca hoy. Tenía información de auditoría guardada, pero con una carcasa incorrecta en los nombres de las propiedades. (La auditoría está integrada en una capa de datos). De todos modos, tuve que agregar IgnoreCase como un indicador vinculante, pero luego no funcionó, hasta que mi compañero de trabajo encontró esta respuesta. La función resultante:
Esto es parte de una clase que llamo DotMagic.
fuente