实现冲突的接口
问题描述:
如果两个接口具有不同类型的相同属性,我该如何使用一个实现它们的类。示例代码:实现冲突的接口
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";
}
}
歧义引用错误的截图:
答
你投foo
要么ITest
或ITest2
。
ITest3 foo = new Simple();
((ITest)foo).WhatEv = "asdf";
答
这很简单。由于这些命名相同,并且具有相同的参数,因此编译器无法区分这两者。它将与具有相同参数的两个函数相同,但返回一个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
。
工程就像一个魅力。谢谢。 – basarat 2013-03-15 02:55:47