如何遍历自定义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 }