同一个方法的两个接口
Two interfaces with the same method
我有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 () {}
}
问题是我无法制作它们 public 或在 C1
中的另一个 public 方法中调用它们
你必须对你想要的任何接口执行类型转换,即使是在你的 class 内部。如果你想调用你的 I2 方法实现,使用这样的强制转换来调用它:
(this as I2).SayHello();
在你的 class 之外,例如你必须写:
C1 x = new C1();
(x as I1).SayHello();
你拥有的是所谓的显式接口方法实现,这些方法只能通过它们的接口访问。
这称为显式实现的接口。当然,您可以调用这些方法,但您必须先将 class 实例重新键入正确的接口。
var c1 = new C1();
((I1)c1).sayHello();
参考:https://msdn.microsoft.com/en-us/library/aa288461(v=vs.71).aspx
我有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 () {}
}
问题是我无法制作它们 public 或在 C1
中的另一个 public 方法中调用它们你必须对你想要的任何接口执行类型转换,即使是在你的 class 内部。如果你想调用你的 I2 方法实现,使用这样的强制转换来调用它:
(this as I2).SayHello();
在你的 class 之外,例如你必须写:
C1 x = new C1();
(x as I1).SayHello();
你拥有的是所谓的显式接口方法实现,这些方法只能通过它们的接口访问。
这称为显式实现的接口。当然,您可以调用这些方法,但您必须先将 class 实例重新键入正确的接口。
var c1 = new C1();
((I1)c1).sayHello();
参考:https://msdn.microsoft.com/en-us/library/aa288461(v=vs.71).aspx