同一个方法的两个接口

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