c# - Registering types in IModule and encapsulation problem -
the common prism's way of designing complex applications have each module implementing imodule interface initialize being able work. in cases "initialization" registering types ioc container. so, in our case imodule looks this:
public class module : imodule { private iunitycontainer _container; public module(iunitycontainer container) { _container = container; } public void initialize() { //register public types _container.registertype<imypublicinterface, myimplementation>(); //register internal dependencies _container.registertype<iinternaldependency1, internaldependency1>(); _container.registertype<iinternaldependency2, internaldependency2>(); //..etc. } } our modules have one(or few) public types, , more internal classes/dependencies register.
i'm little bit worried, if approach breaks encapsulation principle? seems, we're registering (both internal , public types) within 1 global container, blur module's border (public , internal types registration same) , make potentially possible .resolve our "internal" classes in other places.
isn't better register internal dependencies within childcontainer?
or may we're doing wrong? :)
your question has answer modules register views , view models in child containers. sharable services registered in global container.
Comments
Post a Comment