我的内容如下所示:
[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>();
但是,当我这样做时,它根本不会返回任何属性。
思想?
答案 0 :(得分:5)
“在”行需要调整。它应该读
in typeof(T).GetCustomAttributes(typeof(CoolnessFactorAttribute), true)
传递给GetCustomAttributes方法的类型标识了您要查找的属性类型。它还意味着以下where子句是不必要的,可以删除。
删除该子句后,它不再需要查询。可以做的唯一真正的改进是投射结果以获得强类型集合。
var attributes =
typeof(T).GetCustomAttributes(typeof(CoolnessFactorAttribute),true)
.Cast<CoolnessFactorAttribute>();