2009-06-09 8 views
0

私はJavaで次のように実装したコードの一部があります:ジェネリック:「間接の2つのレベルの」

public void doIt(T extends MyEventArgs<? extends MyBaseClass> obj) { 
    ... 
} 

私はC#でどのようにしていることだろうか?私はこれが最初のことだと思った:

public void oIt(T obj) where T : MyEventArgs<P> where P : MyBaseClass { 
    ... 
} 

しかし、確かに私の構文が間違っています。

PS:これをやっている理由を私に聞かないでください。ただ、ジェネリック型引数が不足して

+0

である理由あなたはこれをやっている? ---申し訳ありません;-)抵抗することができません; – fretje

答えて

11

:)をしてください:

public void oIt<T,P>(T obj) 
    where T : MyEventArgs<P> 
    where P : MyBaseClass 
{ 
    ... 
} 

(名前はoItTPobjはおそらく明確かもしれないが、私はそれが匿名化であると仮定します)

+1

ところで、コンパイラは、これを行う場合、あなたのための型パラメータを推論することはできません。メソッドを呼び出すときは、TとPの両方を手動で指定する必要があります。 –