Я создал общий базовый класс для WinForm UserControl:
public partial class BaseUserControl<T> : UserControl
{
public virtual void MyMethod<T>()
{
// some base stuff here
}
}
И UserControl на основе этого:
public partial class MyControl : BaseUserControl<SomeClass>
{
public override void MyMethod<SomeClass>()
{
// some specific stuff here
base.MyMethod<SomeClass>();
}
}
Он работает нормально, но MyControl нельзя редактировать в VisualStudio Designer, потому что он говорит, что не может загрузить базовый класс. Я попытался определить другой класс BaseUserControl, не общий, надеясь, что он загрузит его, но уловка, похоже, не работает.
У меня уже есть обходной путь: определите интерфейс IMyInterface ‹T›, а затем создайте свой элемент управления как
public partial class MyControl : UserControl, IMyInterface<SomeClass>
Но я теряю базовые виртуальные методы (не беда, но все же ...).
Есть ли способ создать базовый универсальный класс для UserControl с возможностью редактирования его в VisualStudio Designer?