[英]Can an attribute require inheritance or implementation of a class or interface?
尝试将System.AttributeUsage
属性应用于类时,Visual Studio将显示错误"Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute"
。 是否可以为自定义属性指定这样的要求?
想象一下一个属性类CommandAttribute
,它将指定命令的名称。 它仅应存在于实现ICommand
类上,以便我们可以保证在类上存在ExecuteCommand(...)
之类的方法。
我当然可以使用反射来检查所应用的类是否在运行时实现了接口,但理想情况下,我们可以在编译时强制执行此操作。
不幸的是,C#语言不直接支持此功能。
但是,您可以使用.NET编译器平台(又名Roslyn)编写自己的代码分析规则 ,并自己执行该条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.