避免外部代码中的属性歧义

时间:2015-07-03 21:35:50

标签: c# .net .net-4.5

我正在使用外部库(我无法更改),并且在尝试设置属性时看到了一个模糊的引用。

这是一个示例(不是实际的库或属性名称)

外部代码:

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。有没有什么办法可以明确指定这个来防止编译错误?

2 个答案:

答案 0 :(得分:2)

对于设计Interface0Interface1Interface2类型层次结构的人来说,这似乎是一个奇怪的决定。您可以做的是转换为(或指定引用)要为其设置属性的接口类型:

Interface1 myObject = new Class1();
myObject.Item = 2.0;

答案 1 :(得分:1)

除了Asad的答案之外,如果您需要在Interface0上使用其他属性和方法,也可以在分配时进行转换。

Interface0 myObject = new Class1();
(myObject as Interface1).Item = 2.0;