如果两个接口具有不同类型的相同属性,我如何使用嵌入它们的类。示例代码:
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";
}
}
不明确的参考错误的屏幕截图:
答案 0 :(得分:6)
您将foo
投射到ITest
或ITest2
。
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
。