これは他の構文で可能ですか?ジェネリック型引数を持つ汎用のジェネリック型
interface IFoo<T<U>> where U: Bar, new() where T<U>: class, IFoo<T<U>>, new()
それはいくつかのポイントを説明するためにジェネリック型
class MyFoo<U>: IFoo<MyFoo<U>> where U: Bar, new()
編集することがIFooのための一般的な引数を強制する方法です:
- Uはバーで...それを考え
- TはIFoo ...カスタマービジネスオブジェクトになります
- IFooはインターファーです私は現在、それを実装することができますが、私は一般的なU.
はそれなしで生きることができる失う
interface IFoo<T<U>> where U: Bar, new() where T<U>: class, IFoo<T<U>>, new() T<U> DoOnce(); class MyFoo<U>: IFoo<MyFoo<U>> where U: Bar, new() MyFoo<U> DoOnce(){return this;} MyFoo<U> DoAgain(){return this;}//this is not in interface class Test{ public Test(){ IFoo<MyFoo<Bar>> x = new MyFoo<Bar>();//Generics can come as parameters x. DoOnce()//this is from interface DoAgain();//Can access this x's method cause of generic in IFoo } }
??:いくつかのビジネスのためのCEは
- オブジェクトIFooは、使いやすさを説明するために編集
List<U> GetList(int compareToCustomerProperty)
を定義します?完全に
私のコードのいくつかの時点でこのアプローチを逃すだろうか???ナ!
は、私はちょうど私が、これは(抽象&コンクリートの間でメソッドチェーンジェネリックで、より自由)私のコードで答えを
感謝を持っていいだろう見た地点に来ました!
なぜ 'IFoo'がどのように' U'が制約されている気にする必要があり
typeof(T).IsGenericType
を呼び出すことにより、一般的なものであれば、あなたは常に実行時にチェックすることができるということが必要な場合は?ユースケースは何ですか? –こんにちは@Babcockは編集の第4ポイントで答えました –
しかし、 'IFoo'は' U'を 'T 'にインスタンス化する責任を委任すべきではありませんか? –