i have project has 3 layer.
1st dal
2nd domain
3rd presentation
i created interface in domain layer (icategoryrepository) here code
public interface icategoryrepository { list<categorydto> getcategory(); } and created class in dal implement icategoryrepository in domain.
public class categoryrepository : icategoryrepository { bookinfocontext _context; public list<categorydto> getcategory() { _context = new bookinfocontext(); var categorydto = _context.categories .select(c => new categorydto { categoryid = c.categroyid, categoryname = c.categoryname }).tolist(); return categorydto; } } then create class in domain , pass icategoryrepository parameter in constructor.
public class categoryservice { icategoryrepository _categoryservice; public categoryservice(icategoryrepository categoryservice) { this._categoryservice = categoryservice; } public list<categorydto> getcategory() { return _categoryservice.getcategory(); } } i invert control. instead of domain depend on dal invert control mydal depend on domain.
my problem is, everytime call categoryservice in presentation layer need pass icategoryrepository parameter of constructor in dal. don't want presentation layer dependent in dal.
any suggestion?
thanks,
you use dependency injection. in asp.net mvc have idepencyresolver interface inject dependencies on controllers dependencies , dependencies. this, need container easy inject dpendencies, sample, ms unity, ninject, etc.. , register types on container knows how resolve dependencies.
with container , dependencyresolver setted, can have dependency of service on controller, sample:
public class categorycontroller { private readonly icategoryservice _categoryservice; // inject constructor.. public categorycontroller(icategoryservice categoryservice) { _categoryservice = categoryservice; } public actionresult index() { var categories = _categoryservice.getcategory(); return view(categories); } } in case, container see controller need service , service need repository. resolve your, since have registred these types.
take @ article: http://xhalent.wordpress.com/2011/01/17/using-unity-as-a-dependency-resolver-asp-net-mvc-3/
Comments
Post a Comment