实现冲突的接口

问题描述:

如果两个接口具有不同类型的相同属性,我该如何使用一个实现它们的类。示例代码:实现冲突的接口

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

你投foo要么ITestITest2

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

工程就像一个魅力。谢谢。 – basarat 2013-03-15 02:55:47

这很简单。由于这些命名相同,并且具有相同的参数,因此编译器无法区分这两者。它将与具有相同参数的两个函数相同,但返回一个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