下面有一些代码。
interface IFirst
{
void Show();
}
public class Test : IFirst
{
void IFirst.Show()
{
Console.WriteLine("First");
}
}
在实现类中,我无法为Show()提供公共访问说明符。 如何从主程序中调用此Show()?
答案 0 :(得分:5)
尝试,
IFirst obj = new Test();
obj.Show();
答案 1 :(得分:0)
您必须将变量强制转换为接口类型,因为显式接口方法只能使用接口访问,并且无法使用实现它们的类访问。使用显式接口实现是一种代码封装形式,可以隐藏类的实现细节(还允许使用冲突方法的名称实现许多接口)。
Test test = new Test();
var casted = test as IFirst;
casted.Show();
您也可以使用隐式强制转换方法发送变量:
public void ShowMeATrick(IFirst first) {
first.Show();
}
Test test = new Test();
ShowMeATrick(test);
答案 2 :(得分:0)
显式接口方法只能通过接口访问,而不能通过实现它们的类访问。
在您的代码中,您可以将类的实例强制转换为接口,然后引用显式定义的方法/属性。
显式接口上的MSDN链接: http://msdn.microsoft.com/en-us/library/ms173157%28v=vs.100%29.aspx
提出类似问题的另一个问题: Compilation Error: "The modifier 'public' is not valid for this item" while explicitly implementing the interface