如何浏览自定义对象中的每个属性?它不是一个集合对象,但是对于非集合对象有这样的东西吗?
For Each entry as String in myObject ' Do stuff here... Next
我的对象中有字符串,整数和布尔属性.
通过使用反射,您可以做到这一点.在C#中它看起来像那样;
PropertyInfo[] propertyInfo = myobject.GetType().GetProperties();
添加了VB.Net翻译:
Dim info() As PropertyInfo = myobject.GetType().GetProperties()
您可以使用System.Reflection命名空间来查询有关对象类型的信息.
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
请注意,建议不要在代码中使用此方法而不是集合.反思是一项表现密集型的事情,应该明智地使用.
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