两个接口采用相同的方法

时间:2015-08-01 11:32:39

标签: c# class interface public void

我有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中使用其他公共方法调用它们

2 个答案:

答案 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();

你拥有的是一个所谓的显式接口方法实现,这些方法只能通过它们的接口访问。