2017-06-28 4 views
-7

J'ai un ObservableCollection génériqueComment accéder à la propriété d'un objet dans ObservableCollection?

public ObservableCollection<T> _DGModels; 

et j'inséré des données dans le ObservableCollection

public static ObservableCollection<dynamic> GetDGModelFromDatabase() 
    { 

     return new ObservableCollection<dynamic> 
     { 
      new Student { FirstName="Tom", LastName="Jones"}, 
      new Student { FirstName="Dick", LastName="Tracey"}, 
      new Student { FirstName="Harry", LastName="Hill"}, 
      new Student { FirstName="Jack" , LastName="Sparrow"}, 
      new Student { FirstName="Davy" , LastName="Jones"} 
     }; 
    } 

Chacun des données insérées est une instance d'une classe

public class Number : INotifyPropertyChanged 
{ 
    public int firstNumber; 
    public int lastNumber; 

    public int FirstNumber 

    public int LastNumber 

    public int PlusNumber 


    public event PropertyChangedEventHandler PropertyChanged; 

    public void NotifyPropertyChanged(string propertyName) 

} 

Ma question est de savoir comment puis-je accéder à la propriété Number de FirstName ou LastName à l'aide de Type.GetProperty()?

+5

Veuillez ne pas poster votre code comme une image. 'StackOverflow' a un bon éditeur pour ça. – Peter

+5

S'il vous plaît [Modifier] votre question pour inclure le code en tant que texte réel. L'exigence de le faire est expliquée dans [Pourquoi ne pas télécharger des images de code sur SO lors de la pose d'une question?] (Https://meta.stackoverflow.com/a/285557/3744182). – dbc

+0

Qu'est-ce que GetProperty()? – mm8

Répondre

0

Pour obtenir la valeur de la propriété FirstName (ou LastName) utilisant la réflexion, il vous suffit d'utiliser le GetProperty() que vous avez demandé, comme ceci:

Number num = new Number() { FirstNumber = 1, LastNumber = 5 }; 

int first = (int)num.GetType().GetProperty("FirstNumber").GetValue(num,null); 

Console.WriteLine(first); 

En supposant que vous Number la classe ressemble à ceci:

public class Number : INotifyPropertyChanged 
{ 
    public int FirstNumber { get; set; } 
    public int LastNumber { get; set; } 
    public int PlusNumber { get; set; } 

    public event PropertyChangedEventHandler PropertyChanged; 

    public void NotifyPropertyChanged(string propertyName) 
    { 
     //... 
    } 
}