Bellow se simplifica versión del código que tengo:Genérico problema generador de clases
public interface IControl<T>
{
T Value { get; }
}
public class BoolControl : IControl<bool>
{
public bool Value
{
get { return true; }
}
}
public class StringControl : IControl<string>
{
public string Value
{
get { return ""; }
}
}
public class ControlFactory
{
public IControl GetControl(string controlType)
{
switch (controlType)
{
case "Bool":
return new BoolControl();
case "String":
return new StringControl();
}
return null;
}
}
El problema está en el método de la clase GetControl ControlFactory. Porque devuelve IControl y solo tengo IControl < T> que es una interfaz genérica. No puedo proporcionar T porque en el caso de Bool va a funcionar como bool y en el caso de String va a ser una cadena.
¿Alguna idea de lo que tengo que hacer para que funcione?
@Vadim - Le recomiendo encarecidamente que utilice la solución de Daniel, donde está comparando tipos en lugar de usar cadenas. Usar el nombre del tipo es más propenso a errores. –
@Jon B: tienes razón; comparar los tipos proporcionará un código más robusto. Simplemente actualicé el código original de Vadim para trabajar. El enfoque de Daniel es la mejor manera de hacerlo. –