ここに私が書こうとしているものがあります:
public void Foo<T>(T parameter) {
otherObject.Bar<T>(parameter);
}
Bar() メソッドのシグネチャは次のとおりです。
public void Bar<T>(T parameter) where T: class
Foo の署名の T には同じ制約がないため、コンパイル エラーが発生します。残念ながら、私は書くことができません:
public void Foo<T>(T parameter) where T: class {
otherObject.Bar<T>(parameter);
}
Foo は外部インターフェイスで定義されたメソッドを実装しているためです。質問は:
Bar を呼び出す前に、メソッド Foo 内でどうにか T を転置できますか。(注、T は常にクラスになると確信できます。コンパイラを通過する必要があるだけです)。
私が見つけた唯一の方法はリフレクションを使用することですが、見逃している簡単なトリックがあるのではないかと思います。