获取按通用列表类型实现的所有属性

时间:2018-07-09 09:21:59

标签: c#

我有以下产品类别

[MyCustomAttribute ]
public class Product   {

}

以及以下产品列表

var list = new List<Product>();

我想要MyCustomAttribute中的List

我正在尝试:

 var attributes = (MyCustomAttribute[]) list
   .GetType()
   .GetCustomAttributes(typeof(MyCustomAttribute ));

但这似乎不返回任何内容...

2 个答案:

答案 0 :(得分:3)

List<T>尚未归因于MyCustomAttribute,但列表的项目具有:

   [MyCustomAttribute(...)]
   public class Product {...}

   var list = new List<Product>();

   ...

   MyCustomAttribute[] attributes = list
     .Where(item => item != null)
     .SelectMany(item => item.GetType().GetCustomAttributes<MyCustomAttribute>())
     .ToArray();

答案 1 :(得分:1)

如果您想将脱类列表转换为基类列表,可以这样做

var attributes = list.Select(x=> (MyCustomAttribute)x);

var attributes = list.ConvertAll(x => (MyCustomAttribute)x);

var attributes = list.Cast<MyCustomAttribute>();