C# définition de valeurs de propriété par le biais de la réflexion avec des attributs
Je suis en train de construire un objet par le biais d'un attribut sur une des classes de propriété qui spécifie une colonne dans une ligne de données qui est la valeur de la propriété, comme ci-dessous:
[StoredDataValue("guid")]
public string Guid { get; protected set; }
[StoredDataValue("PrograGuid")]
public string ProgramGuid { get; protected set; }
Dans une méthode Build() sur un objet de base, j'obtiens les valeurs d'attribut défini sur ces propriétés comme
MemberInfo info = GetType();
object[] properties = info.GetCustomAttributes(true);
Toutefois, à ce stade, je suis de conscience de la limitation à ma connaissance.
Pour commencer, je ne semble pas être de retour les attributs corrects.
Et comment puis-je définir ces propriétés par le biais de la réflexion, maintenant que j'ai les attributs? Suis-je en train de faire /penser quelque chose de fondamentalement incorrect?
Vous devez vous connecter pour publier un commentaire.
Il ya un couple de questions distinctes ici
typeof(MyClass).GetCustomAttributes(bool)
(ouGetType().GetCustomAttributes(bool)
) renvoie les attributs de la classe elle-même, pas les attributs sur les membres. Vous devrez invoquertypeof(MyClass).GetProperties()
pour obtenir une liste des propriétés dans la classe, puis de vérifier chacun d'entre eux.Une fois que vous avez la propriété, je pense que vous devriez utiliser
Attribute.GetCustomAttribute()
au lieu deMemberInfo.GetGustomAttributes()
puisque vous savez exactement ce que l'attribut que vous recherchez.Voici un petit extrait de code pour vous aider à démarrer:
MODIFIER: N'oubliez pas que
Type.GetProperties()
renvoie uniquement les propriétés publiques par défaut. Vous devrez utiliserType.GetProperties(BindingFlags)
pour obtenir d'autres sortes de propriétés.