visual ver studio instalar generar diagrama crear code clases visual-studio user-controls designer abstract base

ver - Visual Studio: diseña una clase UserControl que se deriva de una clase base abstracta



ver diagrama de clases en visual studio 2017 (4)

En lugar de utilizar clases abstractas, puede marcar las funciones virtuales y anularlas en las clases heredadas

Quiero tener una clase base abstracta para algunos de mis UserControl ''s personalizados. La razón es obvia: comparten algunas propiedades y métodos comunes (una implementación básica de algunos elementos de una interfaz en realidad), y quiero implementarlos solo una vez.

Lo he hecho al definir mi clase base abstracta:

public abstract class ViewBase : UserControl, ISomeInterface

Luego fui a implementar uno de mis puntos de vista, como de costumbre, con el diseñador:

public partial class SpecialView : UserControl //all OK

Hasta aquí todo está bien. Ahora reemplazo la derivación de mi clase SpecialView por la clase base abstracta:

public partial class SpecialView : ViewBase //disrupts the designer

Ahora, el diseñador en Visual Studio 2008 ya no funcionará, indicando: The designer must create an instance of type ''ViewBase'' but it cannot because the type is declared as abstract.

¿Cómo puedo eludir esto? Simplemente no quiero tener el mismo código copiado para todas esas vistas.

Información: hay una pregunta con métodos virtuales , en lugar de clases abstractas, pero no hay una solución adecuada para mí.


Se podría argumentar que no tiene sentido en términos de filosofía de diseño esperar que se pueda trabajar con un control abstracto en el Diseñador. Una clase abstracta tiende a modelar un tipo de objeto para el cual el simple hecho de saber que es una ''X'' no lo describe adecuadamente: no existe una ave o automóvil abstracto, siempre es un tipo específico de ave o automóvil. Mirándolo de esta manera, si desea ver un control personalizado en el diseñador, tiene que ser un tipo específico de control en lugar de uno abstracto, de lo contrario, ¿qué está mirando? Puedo ver por qué es molesto, pero también puedo ver por qué el Diseñador fue codificado de esta manera.



Prueba esta solución de Urban Potato , que funcionó para mí, con un efecto secundario extraño que nunca he explicado realmente, y nunca tuve una buena solución. ¡Quizás tengas suerte y no tengas ese efecto secundario!