繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM