私は次のクラスを持っています
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
私がやりたいのは、から派生した任意のクラスをパラメータとして、またはパラメータとして取ることができるメソッドを持つB<T>
ことC1
ですC2
。しかし、メソッドを次のように宣言する
public void MyMethod(B<T> x)
動作しません。コンパイラ エラーが発生します。
エラー CS0246: 型または名前空間名 'T' が見つかりませんでした。using ディレクティブまたはアセンブリ参照がありませんか? (CS0246)
私はここでかなり立ち往生しています。非ジェネリックな基本クラスを作成してB<T>
も機能しませんA<T>
。その方法から派生させることはできないからです。私が考えることができる唯一の(醜い)解決策は、によって「実装」される空のダミーインターフェースを定義することB<T>
です。もっとエレガントな方法はありますか?