Ninjectを使用しようとしているMVCを使用した標準の3層プロジェクトに問題があります。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を登録し、ある種のパラメーターとしてリポジトリを使用する必要があるかどうか疑問に思っています。
:s一種の失われた感じ。私が理にかなっていて、誰かが助けてくれることを願っています。