Mam ogólną klasę opakowania, która ma być używana z zestawem typów. Te typy są generowane przez narzędzie i wszystkie pochodzą z klasy bazowej ClientBase. Podczas gdy ClientBase ma tylko domyślny konstruktor, wszystkie wygenerowane typy mają domyślny konstruktor, a konstruktor bierze ciąg jako parametr. W konstruktorze klasy opakowania generuję instancję typu za pomocą konstruktora pobierającego ciąg znaków. Oto przykładowy kod:Jak ograniczyć typ ogólny do musi mieć construtor, który ma pewne parametry?
public class ClientBase
{ }
public class GenericProxy<T>
where T: ClientBase, new()
{
T _proxy;
public GenericProxy(string configName)
{
_proxy = new T(configName);
}
}
Ten kod nie kompiluje ponieważ typ T nie jest gwarantowana mieć konstruktor, który pobiera ciąg. Czy istnieje sposób zdefiniowania ograniczenia dla klasy generycznej, aby wymusić, że typ T musi mieć konstruktor pobierający ciąg znaków? Jeśli nie jest to możliwe, jakie są dobre alternatywy dla radzenia sobie z taką sytuacją?