abstract class CustomControl : UserControl
{
protected abstract int DoStuff();
}
class DetailControl : CustomControl
{
protected override int DoStuff()
{
// do stuff
return result;
}
}
He soltado un DetailControl en un formulario. Se representa correctamente en tiempo de ejecución, pero el diseñador muestra un error y no se abrirá porque el control del usuario base es abstracto.Herencia abstracta de UserControl en el diseñador de Visual Studio
Por el momento, estoy contemplando el siguiente parche, lo cual me parece bastante incorrecto, ya que quiero que las clases secundarias se vean obligadas a implementar el método.
class CustomControl : UserControl
{
protected virtual int DoStuff()
{
throw new InvalidOperationException("This method must be overriden.");
}
}
class DetailControl : CustomControl
{
protected override int DoStuff()
{
// do stuff
return result;
}
}
¿Alguien tiene una mejor idea sobre cómo solucionar este problema?
tuve similares recientemente y fui por tener una interfaz independiente que proporciona los métodos que quería. También traté de cambiar la clase base a UserControl cuando necesitaba editarla, pero estaba desordenada. – Deanna
Posible duplicado de [¿Cómo puedo hacer que el diseñador de Windows Forms de Visual Studio 2008 presente un formulario que implemente una clase base abstracta?] (Http://stackoverflow.com/questions/1620847/how-can-i-get-visual- studio-2008-windows-forms-designer-to-render-a-form-that-im) – Breeze