Forum Programmation.c# Assembly: custom attributes

Posté par  .
Étiquettes : aucune
0
6
fév.
2005
Bonjour,
j'utilise des custom attributes du genre:
[assembly:AssemblyTitle("First plugin")]
[assembly:AssemblyCompany("MySelf")]
[assembly:AssemblyProduct("My first plugin")]

J'arrive ensuite à récupérer les types correspondants depuis une autre application:
Object[] myAttributes = asm.GetCustomAttributes(false);
for(int i = 0; i < myAttributes.Length; i++)
{
Console.WriteLine("attribute {0}", myAttributes[i]);
}

attribute System.Reflection.AssemblyProductAttribute
attribute System.Reflection.AssemblyCompanyAttribute
attribute System.Reflection.AssemblyTitleAttribute

Mais je n'ai pas trouvé comment trouvé la valeur correspondante (MySelf, ...) !

Merci
  • # en utilisant la propriété qui va bien ?

    Posté par  . Évalué à 1.


    if (myAttributes[i] is System.Reflection.AssemblyCompanyAttribute){
    Console.WriteLine(((System.Reflection.AssemblyCompanyAttribute)myAttributes[i]).Company);
    }
    • [^] # Re: en utilisant la propriété qui va bien ?

      Posté par  . Évalué à 1.

      Merci

      Mais ca implique qu'au moment ou j'ecris le programme, je sais que je peux tomber sur System.Reflection.AssemblyCompanyAttribute.

      Si la DLL contient [assembly:AssemblyXXXX("YYYY")], avec XXX non connu a l'avance, comment puis-je modifier le code que tu donnes?
      • [^] # Re: en utilisant la propriété qui va bien ?

        Posté par  (site web personnel) . Évalué à 2.

        Impossible, les méta-données sous forme d'attribut sont des propriétés STATIQUES attachée à une classe, une définition de méthode, etc.
        Tu dois donc définir à l'avance les attributs en définissant la classe correspondante si tu veux pouvoir espérer utiliser les champs à l'intérieur.

        Si les attributs ont été défini dans un autre assembly que le tient et que tu tombes dessus, tu as tout de même moyen de récupérer des infos à l'intérieur, tu fais de la reflection sur l'attribut trouvé (GetType) et tu te balade dans les propriétés ou méthodes (GetProperties, GetMethod, etc.)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.