Tengo una clase genérica de envoltura que se pretendía usar con un conjunto de tipos. Esos tipos son generados por una utilidad y se derivan de una clase base ClientBase. Si bien ClientBase solo tiene un constructor predeterminado, todos los tipos generados tienen un constructor predeterminado, así como un constructor toma una cadena como parámetro. En el constructor de la clase contenedora, instancia una instancia del tipo con el constructor que toma una cadena. Aquí es un ejemplo de código:¿Cómo restringir el tipo genérico a debe tener un construtor que toma ciertos parámetros?
public class ClientBase
{ }
public class GenericProxy<T>
where T: ClientBase, new()
{
T _proxy;
public GenericProxy(string configName)
{
_proxy = new T(configName);
}
}
Este código no se compila porque el tipo T no está garantizado para tener un constructor que toma una cadena. ¿Hay alguna manera de definir una restricción en la clase genérica para exigir que el tipo T tenga un constructor que tome una cadena? Si esto no es posible, ¿cuáles son las mejores alternativas para manejar este tipo de situaciones?