【问题标题】:C# convert reflection.propertyinfo to Generic.List<>C# 将反射.propertyinfo 转换为 Generic.List<>
【发布时间】:2011-02-02 18:10:15
【问题描述】:

如何将反射.propertyinfo[] 转换为 generic.list?

【问题讨论】:

    标签: c# reflection generic-list propertyinfo


    【解决方案1】:

    List&lt;T&gt; 构造函数之一接受 IEnumerable&lt;T&gt; 作为其参数(即您的 PropertyInfo 数组):

    var list = new List<PropertyInfo>( propInfoArray );
    

    【讨论】:

      【解决方案2】:
      var list = yourArray.ToList();
      

      【讨论】:

      • @Ed - 不过,至少你有 3.0 编译器。顺便说一句,你试过 LinqBridge 吗?
      • 不,不幸的是 VS 2005(我的意思是说 C# 2.0)。我还没有尝试过 LinqBridge,但我会看看。我们即将将前端 UI 重写到我在工作中开发的机器上,所以我试图说服高管让我们升级。祝我好运:)
      • @Ed 对不起,我是根据你对var的使用来判断的
      • 不错的假设。我通过论坛和阅读博客获得了大量 C# 3.0+ 的东西,但我并不经常使用它们。我在家编写的大部分代码都是用 C 或 C++ 编写的。我喜欢编写硬件接口,恐怕我在 27 岁时已经有点像恐龙了:D。无论如何,+1,因为如果我知道该方法存在,我会推荐你​​的建议。
      【解决方案3】:

      【讨论】:

        【解决方案4】:

        以上都是正确的。但也应该提到的是,像List&lt;T&gt; 一样,所有.net 数组都实现了IList&lt;T&gt;

          var IList<PropertyInfo> ilist = reflection.propertyinfo;
        

        因为我知道,当我需要一个类似列表的集合时,我几乎所有的函数都接受IList&lt;T&gt;,我可以将它与传统的数组和列表一起使用。

        【讨论】:

          【解决方案5】:

          使用System.Linq命名空间中可用的扩展方法ToList()

          var myProperties = propertyInfoArray.ToList();
          

          【讨论】:

          • 反射属性没有定义 .ToList 方法。
          • 正如我所说,这是一种扩展方法。正如上面 Nylo Andy 所建议的那样,这个解决方案也恰好是公认的答案。这不应该被否决。 msdn.microsoft.com/en-us/library/…
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-04
          • 1970-01-01
          相关资源
          最近更新 更多