私は、タイプのセットで使用することを意図したラッパー汎用クラスを持っています。これらの型はユーティリティによって生成され、すべて基本クラスのClientBaseから派生します。 ClientBaseにはデフォルトのコンストラクタしかありませんが、生成されるすべての型はデフォルトコンストラクタを持ち、コンストラクタはパラメータとして文字列を取ります。ラッパークラスのコンストラクターでは、文字列を受け取るコンストラクターを使用して型のインスタンスをインスタンス化します。ジェネリック型を制約するには、特定のパラメータを取るconstrutorが必要ですか?
public class ClientBase
{ }
public class GenericProxy<T>
where T: ClientBase, new()
{
T _proxy;
public GenericProxy(string configName)
{
_proxy = new T(configName);
}
}
このコードはコンパイルされません。タイプTは、文字列を取るコンストラクタを持つことが保証されていないためです。型Tに文字列を取るコンストラクタが必要であることを強制するジェネリッククラスの制約を定義する方法はありますか?これが不可能な場合、このような状況を処理するための良い選択肢は何ですか?