当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何遍历自定义vb.net对象的每个属性?》经验,为你挑选了3个好方法。

如何浏览自定义对象中的每个属性?它不是一个集合对象,但是对于非集合对象有这样的东西吗?

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

我的对象中有字符串,整数和布尔属性.



1> Ali Ersöz..:

通过使用反射,您可以做到这一点.在C#中它看起来像那样;

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

添加了VB.Net翻译:

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



2> Mehrdad Afsh..:

您可以使用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

请注意,建议不要在代码中使用此方法而不是集合.反思是一项表现密集型的事情,应该明智地使用.



3> NicoJuicy..:

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

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有