Metro风格应用中的自定义类属性

10

我正在尝试在一个Metro Style App的可移植库中定义和获取类的自定义属性。

类似这样:

[AttributeUsage(AttributeTargets.Class)]
public class FooAttribute : Attribute
{
}

[Foo]
public class Bar
{
}


class Program
{
    static void Main(string[] args)
    {
        var attrs = CustomAttributeExtensions.GetCustomAttribute<FooAttribute>(typeof(Bar));
    }
}

这在普通的4.5版本中是可行的,但针对运行于Metro样式应用程序的便携库时,它会告诉我:

Cannot convert type 'System.Type' to 'System.Reflection.MemberInfo'

感谢


显然,你需要执行以下操作:var attrs = CustomAttributeExtensions.GetCustomAttribute(typeof(Bar).GetTypeInfo()); - marc-dworkin
1
http://msdn.microsoft.com/en-us/library/windows/apps/hh535795%28v=vs.110%29.aspx - Hans Passant
1
@user1364325 如果您上面评论中的代码解决了问题,请将其发布为答案并标记为已回答。 - Adam
2个回答

5
或者,充分利用扩展功能的本意:
var attr = typeof(Bar).GetTypeInfo().GetCustomAttribute<FooAttribute>();

2
根据 OP 的说法:
```var attrs = CustomAttributeExtensions.GetCustomAttribute(typeof(Bar).GetTypeIn‌​fo());```
这似乎与文档一致。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接