实现冲突的接口

时间:2013-03-15 02:39:38

标签: c# .net

如果两个接口具有不同类型的相同属性,我如何使用嵌入它们的类。示例代码:

internal interface ITest
{
    string WhatEv { get; set; }
}

internal interface ITest2
{
    int WhatEv { get; set; }
}

internal interface ITest3 : ITest, ITest2
{
}

internal class Simple : ITest3
{
    string ITest.WhatEv { get; set; }

    int ITest2.WhatEv { get; set; }
}

internal class Program
{
    public static void Main(string[] args)
    {
        ITest3 foo = new Simple();
        foo.WhatEv = "asdf";
    }
}

不明确的参考错误的屏幕截图:

Error In VS

2 个答案:

答案 0 :(得分:6)

您将foo投射到ITestITest2

ITest3 foo = new Simple();
((ITest)foo).WhatEv = "asdf";

答案 1 :(得分:1)

这很简单。因为它们的名称相同,并且具有相同的参数,所以编译器无法区分这两者。它与具有相同参数的两个函数相同,但返回一个int或字符串。

int WhatEva(string hello)
{
    return 0;
}

string WhatEva(string hello)
{
    return "0";
}

这会产生类似的错误消息 - Already defines a member called 'WhatEva' with the same parameter types。由于编译器无法区分这两者。

因此,您需要为编译器提供区分这两者的方法。在这种情况下,您需要抢先将WhatEv投射到ITest