无法从另一个类调用接口方法

RKh*_*RKh 4 c# oop

以下是我的代码:

public interface I1
{
    void method1();
}

public interface I2
{
    void method1();
}
class MyClass
{
    static void Main(string[] args)
    {
        One one = new One();

    }
}

public class One :I1,I2
{
    void I1.method1()
    {
        Console.WriteLine("This is method1 from Interface 1");
    }

    void I2.method1()
    {
        Console.WriteLine("This is method1 from Interface 2");
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

  1. 我无法在类One中将方法声明为Public,因为这些是Interface方法.
  2. 我无法在Main函数中从MyClass实例调用这些Interface方法实现.

Jon*_*eet 6

我无法在类One中将方法声明为Public,因为这些是Interface方法.

那只是因为你正在使用显式接口实现.假设您确实需要两个不同的实现,您可以隐含其中一个:

public void method1()
{
    Console.WriteLine("This is method1 from Interface 1");
}

void I2.method1()
{
    Console.WriteLine("This is method1 from Interface 2");
}
Run Code Online (Sandbox Code Playgroud)

注意现在我们如何指定public访问修饰符,one.method1()并将调用该公共方法.显式接口实现仅允许通过表达式访问该方法,该表达式的编译时类型接口(而不是实现它的类).

我无法在Main函数中从MyClass实例调用这些Interface方法实现.

同样,仅因为您使用显式接口实现而您的one变量属于类型One.

基本上你可以调用方法:

One one = new One();
I1 i1 = one;
I2 i2 = one;
i1.method1();
i2.method1();
Run Code Online (Sandbox Code Playgroud)

或者只是演员:

((I1)one).method1();
((I2)one).method1();
Run Code Online (Sandbox Code Playgroud)