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 Gordon Shumway . É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 jusob . Évalué à 1.
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 TImaniac (site web personnel) . Évalué à 2.
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.