web-dev-qa-db-fra.com

Comment parcourir chaque propriété d'un objet vb.net personnalisé?

Comment parcourir chacune des propriétés de mon objet personnalisé? Ce n'est pas un objet de collection, mais existe-t-il quelque chose comme ça pour les objets non-collection?

For Each entry as String in myObject
    ' Do stuff here...
Next

Il y a des propriétés de chaîne, d'entier et de booléen dans mon objet.

38
Anders

En utilisant la réflexion, vous pouvez le faire. En C # ça ressemble à ça;

PropertyInfo[] propertyInfo = myobject.GetType().GetProperties();

Ajout d'une traduction VB.Net:

Dim info() As PropertyInfo = myobject.GetType().GetProperties()
61
Ali Ersöz

Vous pouvez utiliser System.Reflection espace de noms pour rechercher des informations sur le type d'objet.

For Each p As System.Reflection.PropertyInfo In obj.GetType().GetProperties()
   If p.CanRead Then
       Console.WriteLine("{0}: {1}", p.Name, p.GetValue(obj, Nothing))
   End If
Next

Veuillez noter qu'il n'est pas suggéré d'utiliser cette approche à la place des collections dans votre code. La réflexion est une activité exigeante en performances et doit être utilisée à bon escient.

44
Mehrdad Afshari

System.Reflection est "lourd", j'implémente toujours une méthode plus légère d'abord.

// C #

if (item is IEnumerable) {
    foreach (object o in item as IEnumerable) {
            //do function
    }
} else {
    foreach (System.Reflection.PropertyInfo p in obj.GetType().GetProperties())      {
        if (p.CanRead) {
            Console.WriteLine("{0}: {1}", p.Name, p.GetValue(obj,  null)); //possible function
        }
    }
}

"VB.Net

  If TypeOf item Is IEnumerable Then

    For Each o As Object In TryCast(item, IEnumerable)
               'Do Function
     Next
  Else
    For Each p As System.Reflection.PropertyInfo In obj.GetType().GetProperties()
         If p.CanRead Then
               Console.WriteLine("{0}: {1}", p.Name, p.GetValue(obj, Nothing))  'possible function
          End If
      Next
  End If
7
NicoJuicy

Vous pouvez utiliser la réflexion ... Avec la réflexion, vous pouvez examiner chaque membre d'une classe (un type), les propriétés, les méthodes, les constructeurs, les champs, etc.

using System.Reflection;

Type type = job.GetType();
    foreach ( MemberInfo memInfo in type.GetMembers() )
       if (memInfo is PropertyInfo)
       {
            // Do Something
       }
1
Charles Bretana