vista refieren qué patterns patron mvc modelo los las estructura diseño controlador basados acciones c# model-view-controller design-patterns domain-driven-design observer-pattern

c# - refieren - mvc python



Patrón de MVC y Observador (3)

En C # (o .NET en general) puede usar eventos y delegados que son implementaciones especiales de observador / monitor / oyente.

No sé sobre DDD, pero agregaría un evento "NewCountryAdded" o un evento "CountryListChanged" o algo así.

Tengo problemas para implementar el patrón Observer en mi proyecto. El proyecto debe hacerse como MVC en C #, como una aplicación de Windows.
En mi modelo de dominio tengo, por ejemplo, la clase Country y el repositorio Country. Tengo un controlador de país y vistas para ver todos los países (una lista en un formulario), agregar un nuevo país y editar el país existente.
No sé cuántos puntos de vista tendrán que saber sobre los cambios relacionados con el cambio de país. El caso es que tengo que usar el patrón Observer. Y en la web solo puedo encontrar ejemplos cuando un sujeto es un país y un observador es un formulario que está editando un país y todos los ejemplos están en la aplicación de la consola.

Necesito que todos mis formularios que tienen listas de países sepan agregar un nuevo país, no solo editar los existentes. ¿Cómo se supone que debo hacer eso? ¿Debo hacer de un repositorio un Sujeto?


Puede crear una tarea ''ManageCountry'', que le permite editar / agregar países. Esta tarea podría tener un evento ''CountryChanged'', donde otras vistas pueden suscribirse.

Cuando modifica un país o crea un país nuevo, plantea el evento y los suscriptores pueden reaccionar ante él. Solo tienes que asegurarte de que el evento que generes use algunos EventArgs personalizados para que puedas pasar el objeto Country que se ha modificado al eventhandler.

¿Qué estás usando para implementar una aplicación MVC? ¿Estás usando algún tipo de marco para eso?


Hmm, para mí suena que deberías convertir un repositorio en un tema, para que el repositorio funcione como editor de los formularios. Pruebe esto y díganos si funcionó.