Ich habe eine generische Basisklasse für eine WinForm Usercontrol:Allgemeinbasisklasse für WinForm Usercontrol
public partial class BaseUserControl<T> : UserControl
{
public virtual void MyMethod<T>()
{
// some base stuff here
}
}
Und ein Usercontrol basiert darauf, dass:
public partial class MyControl : BaseUserControl<SomeClass>
{
public override void MyMethod<SomeClass>()
{
// some specific stuff here
base.MyMethod<SomeClass>();
}
}
Es funktioniert gut, aber MyControl können nicht bearbeitet werden im VisualStudio Designer, weil es besagt, dass die Basisklasse nicht geladen werden kann. Ich habe versucht, eine andere Klasse BaseUserControl, nicht generisch zu definieren, in der Hoffnung, es würde es laden, aber der Trick scheint nicht zu funktionieren.
Ich habe bereits eine Abhilfe: Definieren Sie eine Schnittstelle, IMyInterface <T>, und dann meine Kontrolle als
erstellenpublic partial class MyControl : UserControl, IMyInterface<SomeClass>
Aber ich verliere meine Basis virtueller Methoden (keine große Sache, aber immer noch ...).
Gibt es eine Möglichkeit, eine generische Basisklasse für ein UserControl zu erstellen, mit der Möglichkeit, sie im VisualStudio Designer zu bearbeiten?
Sie nicht Ihre Basis virtuellen Methoden zu lösen, enthalten Implementierer Klasse statt erben von ihm. – Robocide