Tengo clase y propiedades ahí. Algunas propiedades se pueden marcar como atributo (es mi LocalizedDisplayName
herencia DisplayNameAttribute
). Este es el método para obtener todas las propiedades de la clase:
private void FillAttribute()
{
Type type = typeof (NormDoc);
PropertyInfo[] propertyInfos = type.GetProperties();
foreach (var propertyInfo in propertyInfos)
{
...
}
}
Quiero agregar propiedades de clase en el cuadro de lista que marcó LocalizedDisplayName
y muestra el valor del atributo en el cuadro de lista. ¿Cómo puedo hacer esto?
EDITAR
Esto es LocalizedDisplayNameAttribute:
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
public LocalizedDisplayNameAttribute(string resourceId)
: base(GetMessageFromResource(resourceId))
{ }
private static string GetMessageFromResource(string resourceId)
{
var test =Thread.CurrentThread.CurrentCulture;
ResourceManager manager = new ResourceManager("EArchive.Data.Resources.DataResource", Assembly.GetExecutingAssembly());
return manager.GetString(resourceId);
}
}
Quiero obtener una cadena del archivo de recursos. Gracias.
c#
reflection
user348173
fuente
fuente
ToString()
? ¿Puede editar su pregunta para agregar algún código para los atributos personalizados que está aplicando y especificar qué datos desea obtener?Respuestas:
Probablemente sea más fácil de usar
IsDefined
:var properties = type.GetProperties() .Where(prop => prop.IsDefined(typeof(LocalizedDisplayNameAttribute), false));
Para obtener los valores en sí mismos, usaría:
var attributes = (LocalizedDisplayNameAttribute[]) prop.GetCustomAttributes(typeof(LocalizedDisplayNameAttribute), false);
fuente
IEnumerable<PropertyInfo>
aquí :) Útil si la persona que ve esta respuesta no está familiarizada con Linq o Reflections.