J'ai créé une classe générique de base pour une WinForm UserControl:
public partial class BaseUserControl<T> : UserControl
{
public virtual void MyMethod<T>()
{
// some base stuff here
}
}
Et un contrôle utilisateur basé sur:
public partial class MyControl : BaseUserControl<SomeClass>
{
public override void MyMethod<SomeClass>()
{
// some specific stuff here
base.MyMethod<SomeClass>();
}
}
Il fonctionne très bien, mais MyControl ne peuvent pas être modifiés dans le VisualStudio Concepteur, parce qu'il dit qu'il est impossible de charger la classe de base. J'ai essayé de définir une autre classe BaseUserControl, non générique, en espérant qu'il allait le charger, mais l'astuce ne semble pas fonctionner.
J'ai déjà une solution: définir une interface, IMyInterface<T>, et ensuite créer mon contrôle
public partial class MyControl : UserControl, IMyInterface<SomeClass>
Mais je perds ma base de méthodes virtuelles (pas une grosse affaire, mais quand même...).
Est-il un moyen de créer une base de classe générique pour un contrôle utilisateur, avec la possibilité de le modifier dans le VisualStudio Designer?