【问题标题】:Type.GetProperties exclude properties with operator []Type.GetProperties 使用运算符 [] 排除属性
【发布时间】:2014-02-06 20:56:14
【问题描述】:

当我打电话时

Type.GetProperties(BindingFlags.Public | BindingFlags.Instance)

我还使用 [] 运算符获取属性。所以例如我有:

MyType
-> Property1
-> Property2[string] 

而返回的PropertyInfo列表同时包含Property1或Property2。

如何使用运算符排除属性?

我希望它通过 bindingflags 发生,但是通过 PropertyInfo 后记进行迭代是可以的,但是我在 PropertyInfo 类上看不到任何指示它是否具有运算符的内容。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    我不认为有任何BindingFlags 值可以从一开始就将它们排除在外,但您可以使用PropertyInfo.GetIndexParameters() 来过滤属性:如果属性未编入索引,则它没有索引参数。

    【讨论】:

      【解决方案2】:

      你可以使用 LINQ 来解决这个问题:

      Type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(prop => prop.GetIndexParameters().Length == 0);
      

      【讨论】:

      • 如果你仍然要使用 LINQ,那么 prop => !prop.GetIndexParameters().Any() 对我来说看起来更好。
      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2021-10-23
      • 2014-06-18
      • 1970-01-01
      相关资源
      最近更新 更多