如何遍历自定义vb.net对象的每个属性?

我怎样才能通过我的自定义对象中的每个属性? 它不是一个集合对象,但是对于非集合对象有这样的东西吗?

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

在我的对象中有string,整数和布尔值属性。

通过使用reflection,你可以做到这一点。 在C#中看起来像这样;

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

增加了一个VB.Net翻译:

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

您可以使用System.Reflection命名空间来查询有关对象types的信息。

 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 

请注意,不build议在代码中使用这种方法而不是集合。 反思是一个性能密集的事情,应该明智地使用。

System.Reflection是“重量级”,我总是实现一个轻量级的方法..

//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 

你可以使用reflection…使用reflection,你可以检查每个类的成员(一个types),proeprties,方法,构造器,字段等。

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