未按预期返回CustomAttributes

时间:2009-07-10 16:44:55

标签: c# attributes interface

我的内容如下所示:

[CoolnessFactor]
interface IThing {}

class Tester
{
    static void TestSomeInterfaceStuff<T>()
    {
        var attributes = from attribute 
                        in typeof(T).GetCustomAttributes(typeof(T), true)
                        where attributes == typeof(CoolnessFactorAttribute)
                        select attribute;
        //do some stuff here
    }
}

然后我会这样称呼它:

TestSomeInterfaceStuff<IThing>();

但是,当我这样做时,它根本不会返回任何属性。

思想?

1 个答案:

答案 0 :(得分:5)

“在”行需要调整。它应该读

in typeof(T).GetCustomAttributes(typeof(CoolnessFactorAttribute), true)

传递给GetCustomAttributes方法的类型标识了您要查找的属性类型。它还意味着以下where子句是不必要的,可以删除。

删除该子句后,它不再需要查询。可以做的唯一真正的改进是投射结果以获得强类型集合。

var attributes = 
  typeof(T).GetCustomAttributes(typeof(CoolnessFactorAttribute),true)
  .Cast<CoolnessFactorAttribute>();