有人可以帮助我理解为什么这不起作用:
public interface IInterface
{
string GetString(string start);
void DoSomething();
}
public class InterfaceImpl : IInterface
{
string IInterface.GetString(string start)
{
return start + " okay.";
}
void IInterface.DoSomething()
{
Console.WriteLine(this.GetString("Go")); // <-- Error: InterfaceImpl does not contain a definition for GetString
}
}
我无法弄清楚为什么我不能调用在实现中最明确定义的函数。
感谢您的帮助。
答案 0 :(得分:5)
需要在接口类型的变量上调用显式实现的方法,通常使用强制转换:
Console.WriteLine(((IInterface)this).GetString("Go"));
How to call explicit interface implementation methods internally without explicit casting?
中涵盖了调用显式定义方法的更多变体答案 1 :(得分:5)
您不需要使用该方法显式指定接口。由于InterfaceImpl已经实现了IInterface,您只需要执行以下操作:
public class InterfaceImpl : IInterface
{
public string GetString(string start)
{
return start + " okay.";
}
public void DoSomething()
{
Console.WriteLine(GetString("Go"));
}
}
根据评论更新。