我希望这个问题的标题准确地总结了这个问题。以下是详细信息:
我有两个类共享几个属性和相关方法,让我们来看看 MyFirstClass 和 MySecondClass。因此,我将这组相交的属性放入我的两个类都继承自的抽象类中:MyAbstractBaseClass。
到目前为止,一切都很好。但是,在我代码中其他地方的方法中,我正在操作这些共享属性,并希望能够通过引用将 MyFirstClass 和 MySecondClass 的实例传递给此方法。就像是:
result1 = myMethod(ref MyFirstClass);
result2 = myMethod(ref MySecondClass);
我尝试使用 MyAbstractBaseClass 作为我的方法的参数类型:
public bool myMethod(ref MyAbstractBaseClass anObject)
但这不被编译器接受。我还尝试从 MyAbstractBaseClass 中提取接口,并让 MyFirstClass 和 MySecondClass 都从 MyAbstractBaseClass 继承并实现接口,如下所示:
public class MyFirstClass : MyAbstractBaseClass, IMyAbstractBaseClass
public class MySecondClass : MyAbstractBaseClass, IMyAbstractBaseClass
然后,我期望 myMethod 能够对这两个类进行操作,如果我将接口的参数设置为 IMyAbstractBaseClass 类型(毕竟,在 OOP 中,您应该尽可能针对接口进行编码)。
public bool myMethod(ref IMyAbstractBaseClass anObject)
IMyAbstractBaseClass myObject = new MyFirstClass();
result1 = myMethod(ref myObject);
这也行不通。编译器说不可能将 MyFirstClass 转换为 IMyAbstractBaseClass,这对我来说似乎很奇怪,因为 MyFirstClass 实现了接口,因此我应该能够将此类的所有对象都视为类型接口,不是吗?
我在这里想念什么?