1

在 C# 中有一个名为 的属性AttributeUsage,如果您想将此属性设置为一个类,它会自动检测该类是否派生自 Attribute 类,如果不是,则会引发错误。

我怎样才能创建这样的限制?

我想创建一个只能在特定类上可用/可设置的属性。

4

1 回答 1

1

您尝试做的事情不能仅通过属性AttributeUsage来实现,但可以通过其他方式实现。

AttributeUsageValidOn属性,即AttributeTarget类型。它允许您指定它仅对 有效class,而不是此类的类型。

那么,为什么AttributeUsage只适用于派生自的类Attribute?这是一个编译器规则CS0641

'attribute' : 属性仅对派生自 System.Attribute 的类有效

使用了只能在派生自System.Attribute的类上使用的属性。

它不是它AttributeUsage自己的一部分。

如果你想实现这样的目标,你需要编写自己的 Roslyn 分析器,它会为你检查它。关于如何编写的教程很少,即官方this),我也建议看roslyn-analyzers代码,CS0641不存在,因为它是编译器错误,而不是分析器,但是您可以在这里获得很多参考.

希望对你有帮助,祝你好运!

于 2019-11-18T08:09:49.147 回答