用相同的方法实现从两个接口继承的接口

问题描述

我的项目有很多接口,但它们的计算方法相互重叠:

    public interface Interface1
    {
        public double CalcStuff( int x );
    }

    public interface Interface2
    {
        public double CalcStuff( int x );
    }

    public interface InterfaceJoined : Interface1,Interface2
    {
    }

    public class ClassJoined : InterfaceJoined
     {
        public double CalcStuff( int x ) { return x*x; }
    }


    

我希望将实现类分配为所有三个接口Interface1,Interface2,InterfaceJoined

        Interface1 calculator1 = new ClassJoined( );

        Interface2 calculator2 = new ClassJoined( );

        InterfaceJoined calculatorJoined = new ClassJoined( );

        double result1 = calculator1.CalcStuff( 20 ); // works

        double result2 = calculator2.CalcStuff( 20 ); // works

        double resultJoined = calculatorJoined.CalcStuff( 20 ); // "the call is ambiguous between the following methods or properties"

我希望接口具有相同的实现。此处无需区分。我该如何实现?这是个糟糕的主意吗?

致谢和问候。

解决方法

我唯一能想到的是将接口的显式默认方法实现与通过Interface1.CalcStuff关键字隐藏Interface2.CalcStuffnew方法相结合:

public interface InterfaceJoined : Interface1,Interface2
{
    double Interface1.CalcStuff(int x) => CalcStuff(x);
    double Interface2.CalcStuff(int x) => CalcStuff(x);
    new double CalcStuff(int x);
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...