如何解决用相同的方法实现从两个接口继承的接口
我的项目有很多接口,但它们的计算方法相互重叠:
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.CalcStuff
和new
方法相结合:
public interface InterfaceJoined : Interface1,Interface2
{
double Interface1.CalcStuff(int x) => CalcStuff(x);
double Interface2.CalcStuff(int x) => CalcStuff(x);
new double CalcStuff(int x);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。