Je bouconne toutes les propriétés d'un objet via réflexion:
For Each p As PropertyInfo In values.[GetType]().GetProperties() If p.CanRead Then 'Do stuff End If Next
4 Réponses :
if p.PropertyType = TypeOf List(Of T) then...
Essayez cette application de console complète. Désolé c'est en c #.
Voici Roatines Réponse dans VB.NET, application de console complète
Imports System Imports System.Reflection Imports System.Collections.Generic Imports System.Collections Namespace ReflectionTest Public Class Object1 Public Overloads Overrides Function ToString() As String Return "This is Object 1" End Function End Class Public Class Object2 Public Overloads Overrides Function ToString() As String Return "This is Object 2" End Function End Class Public Class ContainerClass Public Property objects() As List(Of Object) Get End Get Set End Set End Property Public Property propA() As Integer Get End Get Set End Set End Property Public Property propB() As String Get End Get Set End Set End Property Public Property propC() As String() Get End Get Set End Set End Property End Class Class Program Shared Sub Main(args As String()) ' Sample class instance Dim c As New ContainerClass() ' Add some sample data c.objects = New List(Of Object)() c.objects.Add(New Object1()) c.objects.Add(New Object2()) Dim props As PropertyInfo() = c.[GetType]().GetProperties() For Each p As PropertyInfo In props If GetType(IList).IsAssignableFrom(p.PropertyType) AndAlso p.PropertyType.IsGenericType Then Dim item As IList = DirectCast(p.GetValue(c, Nothing), IList) If item <> Nothing Then For Each o As Object In item Console.WriteLine(o.ToString()) Next End If End If Next Console.ReadLine() End Sub End Class End Namespace
Euhhh, n'est-ce pas illégal de faire sur Stackoverflow ??
Juste essayer d'aider le gars dehors. J'ai utilisé converter.telerik.com
Ici vous allez dans vb.net. (J'utilise .NET 4.5).
Si votre objet d'origine est la liste (de T) avec nom variable = myData, alors Code ci-dessus donne toutes les propriétés de la liste des myData. P> boucle à travers les propriétés du Liste principale (myData) et souhaitez trouver si un seul bien lui-même est un type de liste, utilisez ci-dessous pour la boucle. Vous pouvez supprimer le chèque ISGenericType si non requis en fonction de votre besoin. P> For Each iCol In CurCols
Dim colType as Type = iCol.PropertyType
If colType.IsGenericType AndAlso colType.GetGenericTypeDefinition = GetType(List(Of)) Then
MsgBox(iCol.Name.ToString & " Is a List Type.")
End If
Next