2014-07-21 2 views
0

Existe-t-il un moyen de créer une liste de propriétés de classe? Par exemple, j'ai un projet WPF avec TextBoxes liés à des propriétés de chaîne en tant que tel: (oui, la version actuelle n'implémente INotifyPropertyChanged ...)Liste des propriétés

private string lName; 
public string LName { 
    get { return lName; } 
    set { lName = value; } 
} 

et je veux faire une liste qui contient toutes ces propriétés (donc je pourrais faire des choses comme les régler tous pour vider les cordes dans une boucle for). Je pense était pointeurs dangereux comme

unsafe { 
    List<String*> myProps = new List<string*>() 
    myProps.Add(&lastName); 
} 

mais qui me donne « Ne peut pas prendre l'adresse, obtenir la taille, ou déclarer un pointeur vers un type managé (« string ») »

et il faire pour int propriétés Liste < Int32 *> rendements « Vous ne pouvez prendre l'adresse d'une expression non fixée dans une instruction initialiseur fixe »

+1

J'utiliserais Reflection pour cela. GetType(). GetProperties() et SetValue() pour chacun ... –

Répondre

0

Vous aurez besoin d'utiliser la réflexion. Si vous ne voulez que le public properties, vous aurez juste besoin de faire quelque chose de semblable à ce qui suit:

var type = typeof(MyClass); 

foreach (var prop in type.GetProperties.Where(p => p.PropertyType == typeof(string))) { 
    // do stuff 
} 

Si vous voulez privé (ou d'autres variables de classe) il y a des surcharges pour la méthode GetFields() encore sur la variable type décrit ci-dessus .

Questions connexes