2016-05-16 7 views
0

Ich habe eine KlasseWie durchläuft jede Eigenschaft eines benutzerdefinierten vb.net-Listenobjekts, wenn die Liste leer ist?

Public Class Class1 
    Private _Key As Integer 
    Private _Value As String 
... 
End Class 

beide _key und _value öffentliche Eigenschaften haben. Dann habe ich eine generische Liste

dim obj as New List(of Class1) 

wenn obj.count> 1 kann ich die Eigenschaften erhalten mit Reflection ohne Probleme

dim pi() As System.Reflection.PropertyInfo = obj(0).GetType().GetProperties() //or any valid index for what is worth. 

Aber wenn die Liste leer ist, mit

dim pi() As System.Reflection.PropertyInfo = obj.GetType().GetProperties() 

bekomme ich nicht die Eigenschaften Schlüssel und Wert.

Wie kann ich diese Eigenschaften (durch Reflektion oder andere Mittel) erhalten, wenn die Liste sofort installiert, aber leer ist (obj.count = 0)?

Antwort

1
Dim listType = myList.GetType() 
Dim itemType = listType.GenericTypeArguments.First() 

Die itemType Variable enthält jetzt die gleichen Type wie die vorherigen obj(0).GetType() zurückgegeben.

Beachten Sie, dass die Eigenschaft GenericTypeArguments für .NET 4.5 oder höher ist.

+0

Vielen Dank. Gibt es eine Option für ältere Versionen des Frameworks? – thx0125

+0

Ich bin mir sicher, dass es da ist, aber ich bin mir nicht sicher, was es von meinem Kopf her wäre und ich habe keine Zeit, genau hinzusehen. Wenn noch niemand geantwortet hat, werde ich ein bisschen recherchieren und sehen, was ich sehen kann. – jmcilhinney

Verwandte Themen