Scope
Due to business requirements on the category page, I need to extend and introduce some new fields to the CategoryModel.
Implementation
The way how nopCommerce designed architecture is that the commonly used classes are hinted by the keyword partial. This allows developers to extend the class in the same assembly without much effort. I previously stated that this is not a clean solution and I preferred an alternate method by using IoC.
I cannot however use IoC in this scenarios.
Model instantiation are handled inside the controllers, in fact inside the methods of the controllers!! This prevented me from using dependency injection for model instantiation.
The models in nopCommerce are not inherited to any interface. Without polymorphism, it is difficult to extend objects.
Is this an Anti-Pattern?
Nop.Web is an MVC project that has the model, view and controllers inside. Views are meant to be dirty, as they are the UI. Thus, the project is meant to be and would be dirty.The truth is if you are using nopCommerce as a platform for multi-tenant websites, there are some clever ways of doing this such as controller factory. It gives the controllers and models a separation from the project.
No comments:
Post a Comment