在 C# 中有一个名为 的属性AttributeUsage
,如果您想将此属性设置为一个类,它会自动检测该类是否派生自 Attribute 类,如果不是,则会引发错误。
我怎样才能创建这样的限制?
我想创建一个只能在特定类上可用/可设置的属性。
在 C# 中有一个名为 的属性AttributeUsage
,如果您想将此属性设置为一个类,它会自动检测该类是否派生自 Attribute 类,如果不是,则会引发错误。
我怎样才能创建这样的限制?
我想创建一个只能在特定类上可用/可设置的属性。
您尝试做的事情不能仅通过属性AttributeUsage
来实现,但可以通过其他方式实现。
AttributeUsage
有ValidOn
属性,即AttributeTarget
类型。它允许您指定它仅对 有效class
,而不是此类的类型。
那么,为什么AttributeUsage
只适用于派生自的类Attribute
?这是一个编译器规则CS0641
'attribute' : 属性仅对派生自 System.Attribute 的类有效
使用了只能在派生自System.Attribute的类上使用的属性。
它不是它AttributeUsage
自己的一部分。
如果你想实现这样的目标,你需要编写自己的 Roslyn 分析器,它会为你检查它。关于如何编写的教程很少,即官方或this),我也建议看roslyn-analyzers
代码,CS0641
不存在,因为它是编译器错误,而不是分析器,但是您可以在这里获得很多参考.
希望对你有帮助,祝你好运!