public class ConfigControlBase<T> : UserControl
where T : ProviderBase
{
public T Provider { get; set; }
public void Init(T provider)
{
this.Provider = provider;
}
}
public abstract class ProviderBase
{
public abstract ConfigControlBase<ProviderBase> GetControl();
}
public class ProviderXConfigControl : ConfigControlBase<ProviderX>
{
}
public class ProviderX : ProviderBase
{
public override ConfigControlBase<ProviderBase> GetControl()
{
var confControl = new ProviderXConfigControl() as ConfigControlBase<ProviderX>;
return confControl;
}
}
return confControl;
se emite una excepción:Al lanzar un tipo de elemento genérico hacia abajo
No se puede convertir implícitamente el tipo
ConfigControlBase<ProviderX>
aConfigControlBase<ProviderBase>
Increíble metáfora. Ojalá MSDN fuera así. –