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