如何修复属性歧义

How to fix Attribute ambiguity

在 c# 中,名为 SomethingAttribute 的属性可以与名称 SomethingSomethingAttribute 一起使用。

当有两个不同的属性名为SomethingAttributeSomethingAttributeAttribute时会导致歧义,SomethingAttribute代表什么?

示例:

class MyAttribute : Attribute
{
}

class MyAttributeAttribute : Attribute
{
}

[MyAttribute]  // Here an ambiguous reference.
class A
{

}

我可以使用 [My][MyAttributeAttribute] 来确保我使用第一个或第二个属性。

但是如果我添加名为 MyAttributeAttributeAttribute 的第三个属性呢?

最简单的解决方案是逐字使用 @ 引号。

[@MyAttribute]
[@MyAttributeAttribute]
[@MyAttributeAttributeAttribute]
class Test
{
}

您还可以 重命名 它们 using :

using Attribute1 = MyAttribute;
using Attribute2 = MyAttributeAttribute;
using Attribute3 = MyAttributeAttributeAttribute;

...

[Attribute1]
[Attribute2]
[Attribute3]
class Test
{

}