ho creato una classe generica di base per una WinForm UserControl:classe di base generico per WinForm UserControl
public partial class BaseUserControl<T> : UserControl
{
public virtual void MyMethod<T>()
{
// some base stuff here
}
}
E un controllo utente sulla base di tale:
public partial class MyControl : BaseUserControl<SomeClass>
{
public override void MyMethod<SomeClass>()
{
// some specific stuff here
base.MyMethod<SomeClass>();
}
}
Funziona bene, ma MyControl non può essere modificato in VisualStudio Designer, perché dice che non può caricare la classe base. Ho provato a definire un'altra classe BaseUserControl, non generico, sperando che lo caricasse, ma il trucco non sembra funzionare.
Ho già una soluzione alternativa: definire un'interfaccia, IMyInterface <T>, e quindi creare il mio controllo, come
public partial class MyControl : UserControl, IMyInterface<SomeClass>
Ma perdo i miei metodi base virtuali (non un grande affare, ma ancora ...).
C'è un modo per creare una classe generica di base per un UserControl, con la possibilità di modificarlo in VisualStudio Designer?
non dovete perdere i metodi virtuali di base, contengono la classe alle implementazioni invece di ereditare da essa. – Robocide