Ich versuche, eine benutzerdefinierte Methode zu schreiben, eine Listview-Steuerelement zu füllen Generics mit:Wie schreibe ich eine Methode, die Daten aus jeder Klasse mit Generics ausgeben kann?
private void BindDataToListView(List<T> containerItems)
{
this.View = View.Details;
this.GridLines = true;
this.FullRowSelect = true;
if (this.Items.Count > 0)
this.Items.Clear();
this.BeginUpdate();
int i = 0;
foreach (T item in containerItems)
{
// do something
}
this.EndUpdate();
}
Die Parameter containerItems können viele Einzelteile haben, da ich die Verwendung von Generika bin. Aber ich bleibe in der foreach Schleife stecken. Wie greife ich auf die Werte in containerItems zu?
Muss ich Reflexion für jede Instanz von T in der foreach-Schleife verwenden? Ich denke, ich tue, um den Namen der Eigenschaft abzurufen. Aber sobald ich den Eigenschaftsnamen des Typs T habe, wie kann ich den Wert abrufen?
ist dies das gleiche wie obj.GetType(). GetProperty ("Nachname"). GetValue (obj, null)? –
Nicht ganz; Wichtig ist, dass benutzerdefinierte Modelle (via (TypeDescriptionProvider) berücksichtigt werden. Um ** volle ** Unterstützung zu erhalten (für benutzerdefinierte 'ITypedList' usw.) benötigen Sie zusätzliche Arbeit, aber es bedeutet, dass Sie * dies * unterstützen müssen , Sie müssen nicht alles neu schreiben.Sie unterstützt auch Dinge wie HyperDescriptor ohne Änderungen; -p –