自定义属性是否可以隐含其他属性而无需继承?

Eri*_*c W 7 .net c# inheritance attributes

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

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

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

谢谢。

Shu*_*oUk 1

虽然您可以在属性中使用继承,但建议您不要这样做

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

方法可以应用这两个属性中的任何一个,但不能同时应用这两个属性。任何未应用的操作都使用应用于包含类的属性。如果包含类没有应用任一属性,则使用 DataContractSerializer。

对他们来说,将其密封起来听起来是一个明智的计划。这个 API 的设计并没有考虑到这种扩展。

没有办法(除了 AOP 风格的“代码注入”)在运行时向现有类添加属性。