この質問のタイトルが問題を正確に要約していることを願っています。詳細は次のとおりです。
MyFirstClassとMySecondClassという、いくつかのプロパティと関連するメソッドを共有する2つのクラスがあります。したがって、この交差するプロパティのセットを、両方のクラスが継承する抽象クラス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
次に、タイプIMyAbstractBaseClassのインターフェイスのパラメーターを作成すると、myMethodが両方のクラスで動作できることを期待していました(結局のところ、OOPでは、可能な場合はインターフェイスに対してコーディングすることになっています)。
public bool myMethod(ref IMyAbstractBaseClass anObject)
IMyAbstractBaseClass myObject = new MyFirstClass();
result1 = myMethod(ref myObject);
これも機能していません。コンパイラは、MyFirstClassをIMyAbstractBaseClassに変換することはできないと言っていますが、これは奇妙に思えます。MyFirstClassはインターフェイスを実装しているため、このクラスのすべてのオブジェクトをインターフェイス型として扱うことができるはずです。
ここで何が欠けていますか?