避免外部代码中的 属性 歧义
Avoiding property ambiguity in external code
我正在使用外部库(我无法更改),当我尝试设置 属性.
时看到一个不明确的引用
这是一个示例(不是实际的库或 属性 名称)
外部代码:
namespace ExternalLibrary1.Area1
{
public interface Interface0: Interface1, Interface2
{
}
public interface Interface1
{
double Item { get; set; }
}
public interface Interface2
{
double Item { get; set; }
}
public class Class0 : Interface0
{
double Item;
}
}
我的代码:
Interface0 myObject = new Class1();
myObject.Item = 2.0;
//above line gives me compile error "Ambiguity between 'ExternalLibrary1.Area1.Interface1.Item' and 'ExternalLibrary1.Area1.Interface2.Item'
如我的代码所示,我在尝试分配给 Item
属性.
时遇到歧义错误
我无法更改此库。我知道我想将值分配给 Interface1
。有什么方法可以明确指定它以防止编译错误?
对于设计 Interface0
、Interface1
、Interface2
类型层次结构的人来说,这似乎是一个奇怪的决定。您可以做的是转换为(或分配给其引用)要为其设置 属性:
的接口类型
Interface1 myObject = new Class1();
myObject.Item = 2.0;
作为 Asad 的答案的旁白,如果您需要在 Interface0
.
上使用其他属性和方法,您也可以在分配时进行转换
Interface0 myObject = new Class1();
(myObject as Interface1).Item = 2.0;
我正在使用外部库(我无法更改),当我尝试设置 属性.
时看到一个不明确的引用这是一个示例(不是实际的库或 属性 名称)
外部代码:
namespace ExternalLibrary1.Area1
{
public interface Interface0: Interface1, Interface2
{
}
public interface Interface1
{
double Item { get; set; }
}
public interface Interface2
{
double Item { get; set; }
}
public class Class0 : Interface0
{
double Item;
}
}
我的代码:
Interface0 myObject = new Class1();
myObject.Item = 2.0;
//above line gives me compile error "Ambiguity between 'ExternalLibrary1.Area1.Interface1.Item' and 'ExternalLibrary1.Area1.Interface2.Item'
如我的代码所示,我在尝试分配给 Item
属性.
我无法更改此库。我知道我想将值分配给 Interface1
。有什么方法可以明确指定它以防止编译错误?
对于设计 Interface0
、Interface1
、Interface2
类型层次结构的人来说,这似乎是一个奇怪的决定。您可以做的是转换为(或分配给其引用)要为其设置 属性:
Interface1 myObject = new Class1();
myObject.Item = 2.0;
作为 Asad 的答案的旁白,如果您需要在 Interface0
.
Interface0 myObject = new Class1();
(myObject as Interface1).Item = 2.0;