J'essaie de créer une méthode générique qui lira un attribut sur une classe et retournera cette valeur au moment de l'exécution. Comment ferais-je cela?
Remarque: l'attribut DomainName est de classe DomainNameAttribute.
[DomainName("MyTable")]
Public class MyClass : DomainBase
{}
Ce que j'essaye de générer:
//This should return "MyTable"
String DomainNameValue = GetDomainName<MyClass>();
c#
generics
custom-attributes
Zaffiro
la source
la source
Réponses:
METTRE À JOUR:
Cette méthode pourrait être généralisée pour fonctionner avec n'importe quel attribut:
et utilisez comme ceci:
la source
const Filed
une classe statique?Il existe déjà une extension pour ce faire.
Alors:
la source
la source
J'ai utilisé la réponse de Darin Dimitrov pour créer une extension générique pour obtenir des attributs de membre pour n'importe quel membre d'une classe (au lieu d'attributs pour une classe). Je le poste ici car d'autres peuvent le trouver utile:
Exemple d'utilisation:
la source
Une version simplifiée de la première solution de Darin Dimitrov:
la source
Voici un bon tutoriel si vous ne l'avez pas vu auparavant http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx
La section ici, appelée Accès à l'attribut http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx#vcwlkattributestutorialanchor3
la source
Probablement tout aussi facile à utiliser le corps de la fonction générique en ligne. Cela n'a aucun sens pour moi de rendre la fonction générique sur le type MyClass.
la source
Au cas où quelqu'un aurait besoin d'un résultat Nullable et pour que cela fonctionne sur Enums, PropertyInfo et classes, voici comment je l'ai résolu. Il s'agit d'une modification de la solution mise à jour de Darin Dimitrov.
Exemples d'utilisation:
la source
Plutôt que d'écrire beaucoup de code, faites simplement ceci:
la source
la source