我在尝试使用 Ninject 的使用 MVC 的沼泽标准三层项目时遇到问题。我有一个 MemberRepository:
public class MemberRepository : IMemberRepository{
public bool Save(Member member){
//saves member
}
}
然后我有我的服务层:
public class MemberService : IMemberService{
public bool Register(string email){
//Do Stuff & Populate Member Object
_repo.Save(member);
}
}
鉴于我将使用 Ninject,我设置 AccountController 的最佳方式是什么。我是否应该像这样将 MemberService 传递给构造函数:
public class AccountController : Controller
{
IMemberService _memberService;
public AccountController(IMemberService memberService)
{
_memberService = memberService;
}
}
或者传入存储库:
public class AccountController : Controller
{
IMemberService _memberService;
public AccountController(IMemberRepository memberRepo)
{
_memberService = new MemberService(memberRepo);
}
}
或两者?
我最初只有一个存储库(没有服务层),但我必须实现一个服务层,我不确定在我的 NinjectWebCommon.cs 文件中注册内核时如何处理“依赖关系”。最初只是这样:
kernel.Bind<IMemberRepository>().To<SqlMemberRepository>();
但现在我想知道是否需要注册 IMemberService 并将 repo 作为某种参数。
:s 感觉有点失落。希望我说得通,有人可以帮忙。