Ich habe 3 ProjektdateienWo kann ich meinen Ioc (Ninject) -Code in mein Service-Layer-Projekt einfügen?
webui - controllers and views
framework - service layer and repos
tests- unit tests
So wie ich es sehe, ist, dass meine Controller nur auf meine Dienstschicht (enthält meine Business-Logik) sprechen. Die Service-Schicht wird mit den Repos sprechen und Datenbankdaten abrufen.
Mein Repo wird nur die Datenbank tun und Daten zurückgeben.
Jetzt, wenn ich Einheit testen möchte, muss ich gefälschte Service-Schichten und gefälschte Repositories haben.
So kann ich die Controller isoliert und die Service-Schichten isoliert testen.
Wo also lege ich meinen Ninject-Code in meine Framework-Klassenbibliothek, damit ich ihn mit meiner Service-Ebene verwenden kann?
bearbeiten
Steven sagen Sie, ich sollte so etwas wie dieses
// Setup ninject in globalen aspx mit mvc Erweiterung tun
// jetzt binden das Zeug
private class SportsStoreServices : NinjectModule
{
public override void Load()
{
Bind<IAdminService>().To<AdminService>();
Bind<IAdminRepo>().To<AdminRepo>();
}
}
// Controller
public class AccountController : Controller
{
//
// GET: /Account/
private IAdminService adminService;
public AccountController(IAdminService adminService)
{
this.adminService = adminService;
}
public ActionResult Login()
{
var getAllAdmins = adminService.GetAllAdmins();
return View();
}
}
// Service Layer
public class AdminService : IAdminService
{
private IAdminRepo adminRepo;
public AdminService(IAdminRepo adminRepo)
{
this.adminRepo = adminRepo;
}
public List<Admins> GetAllAdmins()
{
return adminRepo.GetAllAdmins();
}
}
//Repo
public class AdminRepo : IAdminRepo
{
public List<Admins> GetAllAdmins()
{
// some query to get all admins
}
}
Verwenden Sie ninject.web.mvc? https://github.com/ninject/ninject.web.mvc – dotjoe
Die Service-Schicht weiß nichts über Ninject. – dotjoe
Derzeit nicht. Ich folgte nur, was der Autor in pro asp.net mvc 2.0 tat. Aber das würde nicht nur mein Problem mit Webui Teil lösen. Nicht die Service-Schicht? (Was ist in seinem eigenen Projektordner zusammen mit den Repo-Klassen) – chobo2