chaîne au nom de la variable
J'ai de la classe(le Client) qui détient plus de 200 variables de chaîne de caractères en tant que propriété. Je suis l'aide de la méthode avec le paramètre de clé et la valeur. J'essaie de fournir une clé et une valeur à partir du fichier xml. Pour cela, la valeur doit être remplacé par le Client de la classe de la propriété(variables de chaîne de caractères).
ie
Customer
{
public string Name{return _name};
public string Address{return _address};
}
CallInput
{
StringTempelate tempelate = new StringTempelate();
foreach(item in items)
tempelate .SetAttribure(item.key, item.Value --> //Say this value is Name, so it has to substitute Customer.Name
}
est-il possible?
source d'informationauteur Mohanavel
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la réflexion pour définir les propriétés "par nom".
Vous pouvez également lire les propriétés avec GetValue, ou d'obtenir une liste de tous les noms de propriété en utilisant GetType().GetProperties(), qui retourne un tableau de PropertyInfo (le Nom de la propriété contient les propriétés de nom)
Bien, vous pouvez utiliser
Type.GetProperty(nom)
pour obtenir unPropertyInfo
puis d'appelerGetValue
.Par exemple:
Noter que si vous faites beaucoup de vous pouvez convertir les propriétés en
Func<Customer, string>
délégué instances - qui sera beaucoup plus rapide, mais plus compliqué. Voir mon billet de blog sur la création de délégués par la réflexion pour plus d'informations.Réflexion est une option, mais de 200 propriétés est... beaucoup. Il se trouve que je suis en train de travailler sur quelque chose comme cela pour le moment, mais les classes sont créées par code-gen. Pour ajustement "par le nom" d'utilisation, j'ai ajouté un indexeur (lors de la génération de code phase):
Cela donne la commodité de l'expression "par nom", mais de bonnes performances.
Utiliser la réflexion et d'un dictionnaire de l'objet en tant que votre collection d'éléments.