我有2个接口
public interface I1
{
void sayHello ();
}
public interface I2
{
void sayHello ();
}
// and my class that implements the two interfaces
public class C1: I1, I2
{
void I1.sayHello () {}
void I2.sayHello () {}
}
问题是我无法公开或在C1中使用其他公共方法调用它们
答案 0 :(得分:3)
这称为显式实现的接口。当然,您可以调用这些方法,但必须先将类实例重新键入正确的接口。
var c1 = new C1();
((I1)c1).sayHello();
参考:https://msdn.microsoft.com/en-us/library/aa288461(v=vs.71).aspx
答案 1 :(得分:0)
你必须对你想要的任何界面进行类型转换,甚至在你的课堂内。如果你想调用你的I2方法实现,请使用这样的转换来调用它:
(this as I2).SayHello();
在课外,例如你必须写:
C1 x = new C1();
(x as I1).SayHello();
你拥有的是一个所谓的显式接口方法实现,这些方法只能通过它们的接口访问。