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;
एक अपवाद फेंकता है:एक सामान्य तत्व प्रकार कास्टिंग नीचे की ओर
परोक्ष
ConfigControlBase<ProviderBase>
कमाल रूपक। मेरी इच्छा है कि एमएसडीएन ऐसा ही था। –