96 votes

Obtenir toutes les propriétés qui ont marqué certaines attribut

J'ai de la classe et les propriétés là-bas. Certaines propriétés peuvent être marquées à l'attribut (c'est mon LocalizedDisplayName hérite DisplayNameAttribute). C'est une méthode pour obtenir toutes les propriétés de la classe:

private void FillAttribute()
{
    Type type = typeof (NormDoc);
    PropertyInfo[] propertyInfos = type.GetProperties();
    foreach (var propertyInfo in propertyInfos)
    {
        ...
    }
}

Je veux ajouter des propriétés de la classe dans la zone de liste qui a marqué LocalizedDisplayName et affichage de la valeur de l'attribut dans la zone de liste. Comment puis-je faire cela?

MODIFIER
C'est 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);
        }
    }  

Je veux obtenir de la chaîne de fichier de ressources. Merci.

157voto

Jon Skeet Points 692016

Il est probablement plus facile à utiliser IsDefined:

var properties = type.GetProperties()
    .Where(prop => prop.IsDefined(typeof(LocalizedDisplayNameAttribute), false));

EDIT: Pour obtenir les valeurs elles-mêmes, vous pouvez utiliser:

var attributes = (LocalizedDisplayNameAttribute[]) 
      prop.GetCustomAttributes(typeof(LocalizedDisplayNameAttribute), false);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X