現在のプロジェクトで LightInject を使用しようとしていますが、null 値を取得し続けます。MVC 5 の Web アプリとそれに関連付けられたビジネス層があります。Web プロジェクトにLightInject.MvcとLightInject.Webをインストールしました。ビジネス プロジェクトにLightInject.Mvcをインストールしました。
ビジネス層には、compositionRoot.cs ファイルがあります。
using LightInject;
using SimpleKB.Business.Commands;
namespace SimpleKB.Business
{
public class CompositeRoot : ICompositionRoot
{
public void Compose(IServiceRegistry serviceRegistry)
{
serviceRegistry.Register<IRegisterUserCommand, RegisterUserCommand>();
serviceRegistry.Register<ICreateCategoryCommand, CreateCategoryCommand>();
serviceRegistry.Register<IUpdateCategoryCommand, UpdateCategoryCommand>();
}
}
}
次に、Web プロジェクトの Global.asax.cs で、app_start メソッドに次のように記述します。
var serviceContainer = new ServiceContainer();
serviceContainer.RegisterFrom<Business.CompositeRoot>();
serviceContainer.EnableMvc();
最後に、コントローラーのコードは次のようになります。
public class AccountController : Controller
{
public IRegisterUserCommand RegisterUserCommand { get; set; }
[HttpGet]
[AllowAnonymous]
public ActionResult Login()
{
RegisterUserCommand.Execute();
return View();
}
}
コードがRegisterUserCommandを使用しようとすると、基本的にコントローラーで null 例外が発生します。インターフェイスに遭遇すると、LightInject が自動的にコードを挿入すると仮定しました。私は何が欠けていますか?