Ma question est là un moyen de récupérer la liste des paramètres avec sa valeur à l'aide de la réflexion?
Je souhaite utiliser la réflexion pour obtenir la liste des paramètres de la propriétéInfo. P>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = true)] public class Author : Attribute { public Author(string name, int v) { this.name = name; version = v; } public double version; public string name; } public class TestClass { [Author("Bill Gates", 2)] public TextBox TestPropertyTextBox { get; set; } }
4 Réponses :
Je suppose par paramètre liste, vous voulez dire une liste de tous les utilisations d'attribut?
Sinon, ce code vous indique comment obtenir un attribut à l'aide de la réflexion sur une classe entière. Mais vous devriez être capable de prendre ce dont vous avez besoin. P>
Voici une méthode pour trouver tous les attributs d'un certain type, sur n'importe quelle propriété à l'intérieur d'un alors vous pourriez aller: p> aussi, vous pouvez souhaiter votre qui permettra la version code> code> à partir du constructeur et lisez n'importe où. P> p> testclass code> p> P> < Pré> xxx pré>
double version publique code> et
et
Nom de la chaîne code> pour être propriétés.
Quelque chose comme ceci: p>
Merci. Mon cas est que cela n'utilise pas la classe statique. Ainsi utiliser l'attribut auteur auteure = (auteur); n'est pas ok. Je souhaite utiliser la réflexion pour obtenir la liste des paramètres de la propriétéInfo.
Pouvez-vous définir la liste des paramètres?
La liste des paramètres est que je peux obtenir ("Bill Gates", 2) en utilisant de manière dynamique la réflexion avec une "auteur" à l'attribut Cast. Parce qu'il y aura beaucoup d'attributs de ce type, certains peuvent ne pas être un attribut auteur.
Eh bien, vous pouvez itérer sur l'attribut et obtenir toutes les propriétés?
Utilisation de ce programme i obtenir cette sortie: p> p> p>
string name = author.name; is not allowed because the field name is not public. Does it work if you make name public?
Désolé c'est une faute de frappe, j'ai ajouté le retour du public.
Votre dernière modification révèle votre problème. Utilisez getcustomattributes code> avec un paramètre de type à filtrer et uniquement sur les attributs qui sont des attributs code> authentifier user> ou d'autres utilisent
auteure auteur = l'auteur; code> d'une distribution, pour faire une vérification de type dynamique et ignorer ceux qui reviennent
null code>.
J'ai eu le même problème dans l'une de mes applications. C'est ma solution:
Attribute Name : [Author("Bill Gates", (Int32)2)] Constructor arguments : "Bill Gates", (Int32)2