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

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。有什么方法可以明确指定它以防止编译错误?

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

的接口类型
Interface1 myObject = new Class1();
myObject.Item = 2.0;

作为 Asad 的答案的旁白,如果您需要在 Interface0.

上使用其他属性和方法,您也可以在分配时进行转换
Interface0 myObject = new Class1();
(myObject as Interface1).Item = 2.0;