ジェネリッククラスMyClass<T>
を作成するたびに、MyClass<>
というインターフェイスが自動的に生成され、汎用のパラメータまたは戻り値を使用しないすべてのメソッドとプロパティMyClass<T>
があるとします。任意のT型の汎用クラスを保持できる変数型に根本的な欠陥がありますか?
これは、別のT
タイプの汎用オブジェクトを処理できるようにするために、単なるインタフェースを作成することから私を救うでしょう。このアイデアに根本的な問題があるのは、それが言語の一部ではない理由であるか、「それは優先されていないか重要であると考えられている」というケースだけですか?
私が「インターフェース」と言うとき、これは必然的に「インターフェース」と呼ばれ、「インターフェース」と呼ばれることを意味しません。私の言うことを説明するのは簡単な方法でした。一種の抽象基本クラスは、それを考えるもう一つの方法です。この機能が存在する場合、その機能は生成されているとは考えられません。タイプList<>
の変数はもちろんList<int>
またはList<MyElement>
のような汎用リストを保持することができ、Count
、Clear()
、Capacity
などのようなものを呼び出すことができます。T
のタイプの知識は必要ないためです。
このディスカッションスレッドが、明確な答えを持つ問題ではない、なぜちょうどそれを明確にする:
私の質問は、レンダリングするアイデア自体に欠陥があるのかどうか、それ型の安全性と互換性がありませんか、またはそれに根本的な欠陥がないかどうかを判断する。使い方の
例:
私は、ジェネリック型に依存していくつかのデータとそうでない他のいくつかのデータの両方が含まれている一般的なクラスを持っています。そして、データの非ジェネリック部分を操作できる再利用可能なコードがあります。現在、私はジェネリッククラスと同じメンバ(汎用のパラメータまたは戻り値を使用するメンバを除いたもの)を持つインターフェイスを定義することによってのみこれを行うことができます。私が複数の実装を持つつもりがない場合、このインタフェースを定義することは余計なようです。必要な情報がすでにジェネリッククラスそのものに入っているため、余分なインターフェースを指定せずに同じことができる言語機能は、この場合には便利です。
単純なケースでは、ジェネリッククラスに対する非ジェネリックベースクラスを持つことが一般的なアプローチです。ただしMyClass<T>
が既にMyBaseClass<T>
から継承されている場合、間に非ジェネリッククラスを置くことはできず、インターフェイスのみを使用できます。
私はあなたの質問を3回読みましたが、私はまだあなたが何を求めているのか全く分かりません。 –
私は同意します、あなたは何を求めていますか? –
私はそのような機能が概念的にC#に追加するのが妥当かどうか、あるいはそのような言語機能をC#に追加することはできないというアイデアに根本的な欠陥があるかどうかを尋ねています。 – runevision