none
Como solucionar un problema de referencia circular??? RRS feed

  • Pregunta

  • Hola a todos,

    Me encuentro con un problema en mi proyecto. Estoy desarrollando una aplicación por capas y en la capa Presentación tengo un Formulario llamado frmTarea. Este formulario lo tengo que pasar a la capa negocio, para hacer ciertas comprobaciones. En el constructor se lo paso como un Form. Aquí es donde tengo el problema, necesito castear el From a frmTarea pero no puedo ingresar la referencia en la capa negocio, se produce una referencia circular.

    ¿Cuál sería la manera correcta de hacerlo?

    Gracias a todos.

    jueves, 26 de febrero de 2015 9:20

Todas las respuestas

  • Si necesitas pasar el Form a la capa de negocio es que estás incluyendo lógica de presentación en la capa de negocio. Ahí está el error.

    La lógica de la capa de negocio debería limitarse al tratamiento de datos, independientemente de la forma en la que se vayan a presentar al usuario.

    Para concretar más habría que conocer la lógica que pretendes implementar.

    jueves, 26 de febrero de 2015 9:34
  • Gracias por tu respuesta.

    Lo que tengo es un formulario en la capa presentación, el cual puede tener n estados. Estos estados los controlo desde la capa de negocio que es luego con la que me conecto a la base de datos.

    Por ejemplo

    El formulario Tarea pasa por estado solicitada. instancio una clase abstracta en solicitada y habilita  controles en el formulario Tarea. Si la clase abstracta la instancio en otra de sus posibles clases hijas realiza otras tareas en el formulario. Ahí es donde necesito pasar a esta clase la instancia del formulario.

    Ahora lo tengo resuelto teniendo el formulario en la capa negocio, pero me gustaría hacerlo de la manera correcta.



    jueves, 26 de febrero de 2015 12:01
  • Lo de habilitar o deshabilitar controles dependiendo del estado del modelo es tarea de la capa de presentación, no de la de negocio. Ese es el error, estás llevando a la capa de negocio lógica que debe estar en la de presentación.

    Si quieres tener las cosas más estructuradas quizá sería más conveniente que utilizaras alguno de los patrones de diseño para las capas de presentación con el MVC, MVP o MVVM. En cualquier caso esa lógica debe estar en la capa de presentación.


    • Editado Jesús López jueves, 26 de febrero de 2015 12:52 x
    • Propuesto como respuesta Sergio Parra jueves, 26 de febrero de 2015 13:04
    jueves, 26 de febrero de 2015 12:50
  • Gracias de nuevo. Voy a seguir tus consejos.

    Un saludo,

    jueves, 26 de febrero de 2015 14:13