我正在用 C# 编写一个程序。我正在尝试做某事,但它并没有达到我的预期。
我有一个接口I,类C1和类C2。
C1实现接口I。C2继承自C1。
接口I有一个名为equals的方法声明,它在C1中实现。在类C2中,也有一个equals方法,它通过检查其他事物来确定相等性来扩展父类(C1)的equals方法。在类C2的 equal 方法中,我使用 base 关键字在 C1 中调用 equals 方法,并使用了一些附加变量来确定相等性。你可以这样想,根据 C1 相等取决于 3 个变量,对于 C2 相等取决于 5 个变量,包括 C1 中的变量。
到目前为止,没有问题。但是,在接受接口I作为参数的方法中,声明如下;
void myMethod(I param1)
当我传递C2实例时,我想在C2中使用equals方法(扩展一个),当我传递C1实例时,我想在C1中使用 equals 方法。但是,程序每次都在C1中使用equals方法,它从不在C2中使用 equals 。我做错了什么,我怎样才能让程序在正确的类中使用equals方法。
谢谢