11
インターフェイスをC#ジェネリック型制約として使用するにはどうすればよいですか?
次の関数宣言を取得する方法はありますか? public bool Foo<T>() where T : interface; すなわち。ここで、Tはインターフェイスタイプです(where T : class、およびと同様struct)。 現在、私は解決しました: public bool Foo<T>() where T : IBase; IBaseが、すべてのカスタムインターフェイスによって継承される空のインターフェイスとして定義されている場合...理想的ではありませんが、機能するはずです...ジェネリック型をインターフェイスにする必要があると定義できないのはなぜですか? 価値Fooがあるのは、インターフェース型が必要な場所でリフレクションを行うためです。通常のパラメーターとして渡して、関数自体で必要なチェックを行うことができますが、これははるかに型保証されているように見えました(そして私はすべてのチェックがコンパイル時に行われるため、もう少しパフォーマンスが高いと仮定します)。