0

現在のプロジェクトで LightInject を使用しようとしていますが、null 値を取得し続けます。MVC 5 の Web アプリとそれに関連付けられたビジネス層があります。Web プロジェクトにLightInject.MvcLightInject.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 が自動的にコードを挿入すると仮定しました。私は何が欠けていますか?

4

1 に答える 1

0

LigtInject.Mvc プロジェクトのコードを見た後、私はそれを理解しました。基本的に、global.asax.cs のコードは次のようになります。

var serviceContainer = new ServiceContainer();
serviceContainer.RegisterFrom<Business.CompositeRoot>();
serviceContainer.RegisterControllers();
serviceContainer.EnableMvc()
于 2016-10-21T15:20:34.843 に答える