当尝试将System.AttributeUsage
属性应用于类时,Visual Studio将显示错误"Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute"
。可以为自定义属性指定这样的要求吗?
想象一下一个属性类CommandAttribute
,它将指定命令的名称。它仅应存在于实现ICommand
的类上,以便我们可以保证在类上存在类似ExecuteCommand(...)
的方法。
我当然可以使用反射来检查所应用的类是否在运行时实现了该接口,但是理想情况下,我们可以在编译时强制执行此操作。
答案 0 :(得分:1)
不幸的是,C#语言不直接支持此功能。
但是,您可以使用.NET编译器平台(又名Roslyn)编写your own code analysis rule并自己执行该条件。