外部に拡張したい Generic クラスがあります。
のクラス内にいた場合MyGenericClass<T>
、次のようなメソッドを単純に定義できます。
public MyReturnType MyMethod()
{
MyReturnType m;
//some code
return m;
}
これは、通常どおり、インスタンスによって呼び出すことができます。myGenericClass.MyMethod();
しかし、拡張機能を使ってこの機能を外部から追加したい。
以下はコンパイルされません。
public static MyReturnType MyMethod(this MyGenericClass<T> mgc)
{
MyReturnType m;
//some code
return m;
}
型 T は推論できないためです。
以下はコンパイルします:
public static MyReturnType MyMethod<T>(this MyGenericClass<T> mgc)
{
MyReturnType m;
//some code
return m;
}
ただし、これには入力が必要でmyGenericClass.MyMethod<MyT>();
あり、さらに悪いことに、MyMethod の "T" が MyGenericClass の "T" と同じになるという制約はありません。2 つのジェネリックは独立しています (ユーザーが両方のクラスに同じ型を使用することに依存しています)。および機能)。
これを正しく宣言するにはどうすればよいですか?
ありがとうハイストロム