I have a new-employee form.
When the "Save" button is pressed, a SavingRequested
event is raised. The Presenter gets an Employee
object from the View and passes it to the Model for further processing.
Should the Employee
object created by the View be passed to the Presenter
via the event arguments:
public event EventHandler<SavingRequestedEventArgs> SavingRequested;
private void OnSavingRequested()
{
SavingRequested?.Invoke(this, new SavingRequestedEventArgs(employeeObject);
}
or should the View have an Employee
property that the Presenter will access?
1 Answer 1
The event data approach will keep you a little closer to the observer pattern, but you should probably not create (or instantiate) Employee
from within the view. It's almost like you're directly coupling the view with the model as explained here.
Find a bare data structure that supports properties, and pass that to the Presenter (controller?) instead via a regular object
-
Thanks. Why shouldn't the View get access to the domain objects?Michael Haddad– Michael Haddad11/21/2017 15:53:58Commented Nov 21, 2017 at 15:53
-
There's a lot of articles on the subject, but generally you'll end up with a view layer that's easier to maintain, test and reuse.Silviu-Marian– Silviu-Marian11/21/2017 16:05:08Commented Nov 21, 2017 at 16:05
-
Thanks. I asked a new question about this topic so you could elaborate if you wish: softwareengineering.stackexchange.com/questions/361064/…Michael Haddad– Michael Haddad11/21/2017 16:06:05Commented Nov 21, 2017 at 16:06