属性可以要求继承或实现类或接口吗?

时间:2019-05-18 21:04:07

标签: c# .net reflection custom-attributes system.reflection

当尝试将System.AttributeUsage属性应用于类时,Visual Studio将显示错误"Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute"。可以为自定义属性指定这样的要求吗?

想象一下一个属性类CommandAttribute,它将指定命令的名称。它仅应存在于实现ICommand的类上,以便我们可以保证在类上存在类似ExecuteCommand(...)的方法。

我当然可以使用反射来检查所应用的类是否在运行时实现了该接口,但是理想情况下,我们可以在编译时强制执行此操作。

1 个答案:

答案 0 :(得分:1)

不幸的是,C#语言不直接支持此功能。

但是,您可以使用.NET编译器平台(又名Roslyn)编写your own code analysis rule并自己执行该条件。