while visual tipos sirve repetitivas repetir que para iterativas for estructuras ejemplos ciclos ciclo asp.net vb.net properties

asp.net - tipos - repetir en visual basic



¿Cómo iterar a través de cada propiedad de un objeto vb.net personalizado? (4)

¿Cómo puedo ver cada una de las propiedades en mi objeto personalizado? No es un objeto de colección, pero ¿hay algo como esto para los objetos que no son de colección?

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

Hay cadenas, enteros y propiedades booleanas en mi objeto.


Al usar la reflexión puedes hacer eso. En C # se ve así;

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

Se agregó una traducción de VB.Net:

Dim info() As PropertyInfo = myobject.GetType().GetProperties()


Puede usar el espacio de nombres System.Reflection para consultar información sobre el tipo de objeto.

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

Tenga en cuenta que no se recomienda utilizar este enfoque en lugar de colecciones en su código. La reflexión es una actividad de alto rendimiento y debe usarse con prudencia.


Puede usar la reflexión ... Con Reflection puede examinar a cada miembro de una clase (un Type), professions, métodos, constructores, campos, etc.

using System.Reflection; Type type = job.GetType(); foreach ( MemberInfo memInfo in type.GetMembers() ) if (memInfo is PropertyInfo) { // Do Something }


System.Reflection es "heavy-weight", siempre implemento un método más ligero primero ...

//DO#

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