c# – 自定义属性是否可以暗示没有继承的其他属性?

我正在编写一些库代码,并且使用该代码的类需要指定两个属性(一个自定义属性和一个来自.NET).

记录这个要求并将这两个属性复制并粘贴到每个使用我的库的类上都有点麻烦,所以我认为让我的自定义属性意味着另一个的存在可能会更好.但是,.NET框架中的其他属性是密封的,所以我不能只继承它…

有没有办法做到这一点?我可以在运行时添加.NET属性吗?

谢谢.

最佳答案 虽然你可以在属性中使用继承,但它是
recommended you don’t.

由于这只是一个性能规则,因此您不会违反正确性,但它可能会引起一些混淆,您必须花费大量精力确保不违反基本属性的语义.如果尝试使用AttributeUsage标志扩展属性的可能位置,则可能会导致问题.有关属性的规则是quite complex.

A method can have either of the two attributes applied, but not both. Any operation that has neither applied uses the attribute applied to the containing class. If the containing class does not have either attribute applied, the DataContractSerializer is used.

给它这个密封听起来像是一个明智的计划.此API的设计并未考虑此类扩展.

没有办法(缺少AOP样式的“代码注入”)在运行时向现有类添加属性.

点赞