我正在使用外部库(我无法更改),并且在尝试设置属性时看到了一个模糊的引用。
这是一个示例(不是实际的库或属性名称)
外部代码:
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
。有没有什么办法可以明确指定这个来防止编译错误?
答案 0 :(得分:2)
对于设计Interface0
,Interface1
,Interface2
类型层次结构的人来说,这似乎是一个奇怪的决定。您可以做的是转换为(或指定引用)要为其设置属性的接口类型:
Interface1 myObject = new Class1();
myObject.Item = 2.0;
答案 1 :(得分:1)
除了Asad的答案之外,如果您需要在Interface0
上使用其他属性和方法,也可以在分配时进行转换。
Interface0 myObject = new Class1();
(myObject as Interface1).Item = 2.0;