如何修复属性歧义
How to fix Attribute ambiguity
在 c# 中,名为 SomethingAttribute
的属性可以与名称 Something
或 SomethingAttribute
一起使用。
当有两个不同的属性名为SomethingAttribute
和SomethingAttributeAttribute
时会导致歧义,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
{
}
在 c# 中,名为 SomethingAttribute
的属性可以与名称 Something
或 SomethingAttribute
一起使用。
当有两个不同的属性名为SomethingAttribute
和SomethingAttributeAttribute
时会导致歧义,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
{
}