c# – 如何从子类访问派生类中实现的接口方法?

我有两个接口A,B都有相同的方法声明.我有一个继承自接口A,B的C类.我有另一个继承自C的D类.现在我想从D中访问C中实现的方法

interface A
{
    int add(int x, int y);
    int mul(int x, int y);
}

interface B
{
    int add(int x, int y);
    int mul(int x, int y);
}

public class C : A,B
{
    int A.add(int x,int y)
    {
        return x + y;
    }

    int A.mul(int x,int y)
    {
        return 0;
    }

    int B.add(int x, int y)
    {
        return x;
    }

    int B.mul(int x, int y)
    {
        return y;
    }  
}


class D : C
{
}

如何从D访问C中的方法?

最佳答案

How to access the methods in C from D?

您必须使用具有相关接口的编译时的引用.例如:

class D
{
    public void FooA()
    {
        A a = this;
        Console.WriteLine(a.mul(...));
    }

    public void FooB()
    {
        B b = this;
        Console.WriteLine(b.mul(...));
    }
}

当然你不需要局部变量 – 你可以施放:

Console.WriteLine(((A) this).mul(...));

……但它有点难看.

这只是因为你正在使用explicit interface implementation.如果你隐式实现了其中一个接口,你可以直接调用方法……但是显式接口实现只允许通过该接口调用成员.

转载注明原文:c# – 如何从子类访问派生类中实现的接口方法? - 代码日志