tipos que programacion poo herencia ejercicios ejemplos constructores clases c# visual-studio-2010 inheritance windows-forms-designer base-class

c# - programacion - que es un constructor java



Cómo evitar el error "No se encontró el constructor en el tipo ''Mi tipo'' ''cuando se hereda una clase base (1)

Eso es completamente imposible.

El formulario que ve en la vista de diseño es una instancia real de su clase base.
Si no hay un constructor predeterminado, el diseñador no puede crear esa instancia.

Puede marcar el constructor con el [Obsolete("Designer only", true)] , y hacer que se lance una excepción si no se llama en el diseñador, para evitar que otras personas lo llamen.

Tengo una aplicación de Visual Studio 2010 Windows Forms que incluye una clase base de formulario que otras clases heredarán. El constructor de la clase base toma un parámetro que las clases secundarias pasarán a la clase base.

Ejemplo:

public partial class BaseForm : Form { public BaseForm(int number) { InitializeComponent(); } } public partial class ChildForm : BaseForm { public ChildForm(int number) : base(number) { InitializeComponent(); } }

El problema que estoy encontrando es que cuando intento abrir ChildForm en el modo Vista de diseño de VisualStudio, recibo el siguiente error:

No se encontró el constructor en el tipo ''MyProject.BaseForm''.

Nota: independientemente del error, el proyecto se compila y funciona bien.

Puedo evitar el error si sobrecargo el constructor con uno que no contiene ningún parámetro.

Ejemplo: (Esto elimina el error)

public partial class BaseForm : Form { public BaseForm(int number) { InitializeComponent(); } public BaseForm() { InitializeComponent(); } } public partial class ChildForm : BaseForm { public ChildForm(int number) : base(number) { InitializeComponent(); } }

Mi pregunta es, ¿cómo puedo crear una clase base que no incluya un constructor sin parámetros y evitar el error de vista de diseño?