ただ好奇心が強いです。確かに、ジェネリックスの型推論の一般的なケースは決定不可能であることは誰もが知っています。したがって、C#はいかなる種類のサブタイピングも行いません。Foo<T>がジェネリックである場合、Foo<int>はFoo<T>、Foo <Object> 、またはその他のサブタイプではありません。調理します。そして確かに、私たちは皆、醜いインターフェースや抽象クラス定義でこれをハックしています。
しかし...一般的な問題に打ち勝つことができない場合は、解決策を簡単なケースに限定してみませんか。たとえば、上記の私のリストでは、Foo<int>がFoo<T>のサブタイプであることは明らかであり、確認するのは簡単です。Foo<Object>に対するチェックについても同じです。
それで、もし彼らがただ言うなら、深淵から忍び寄るであろう他のいくつかの深い恐怖があります、aw shucks、私たちは私たちができることをしますか?それとも、これはマイクロソフトの言語担当者の側のある種の宗教的な純粋さですか?
アップデート:
これは非常に古いスレッドです。最近、C#にはvarがあり、これは私が不満を言ったことの半分を解決します。次に、匿名のデリゲートのLinqスタイルを使用すると、同じものを2回入力する必要がないという優れた表記法があります。したがって、私が反対していたことのすべての側面は、C#の最近の変更によって解決されました(または、スレッドを投稿したときに紹介されたばかりのことを学ぶのに時間がかかっただけです...)私はこれらの新しいものを使用します信頼性の高いクラウドコンピューティング(isis2.codeplex.com)用のIsis2システムの機能があり、その結果、ライブラリのルックアンドフィールは非常にクリーンになっていると思います。それをチェックして、あなたの考えを教えてください)。-ケン・バーマン(2014年7月)