Как настроить LightInject в ASP.NET MVC?

Я использую SimpleInjector в MVC с этим кодом

public static class SimpleInjectorInitializer
{
    public static void Initialize()
    {
        var container = new Container();
        InitializeContainer(container);
        container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
        container.Verify();
        DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
    }

    private static void InitializeContainer(Container container)
    {
        container.Register<IPersonRepository, PersonEntityRepository>();
    }
}

но теперь я хочу проверить LightInject Ioc в моем приложении MVC, но как?

Я написал этот код

[assembly: WebActivator.PostApplicationStartMethod(typeof(LightInjectInitializer), "InitializeLI")]

public static class LightInjectInitializer
{
    public static void InitializeLI()
    {
        var container = new ServiceContainer();            
        InitializeContainer(container);
        container.RegisterControllers(Assembly.GetExecutingAssembly());
        container.EnableMvc();
    }

    private static void InitializeContainer(ServiceContainer container)
    {
        container.Register(typeof(PersonEntityRepository), typeof(IPersonRepository), new PerScopeLifetime());

    }
}

но покажи мне эту ошибку

No parameterless constructor defined for this object. 

Может кто-нибудь помочь мне для написания эквивалентного кода, который работает в MVC?

Пример кода: Скачать

2 ответа

Я автор LightInject и хотел бы помочь вам.

Это статический метод инициализации? Откуда это называется? Причина, по которой вы получаете эту ошибку, возможно, в том, что код инициализации не был выполнен.

Если вам нужна дополнительная помощь, было бы полезно посмотреть, что у вас есть в global.asax.cs.

Эта страница также содержит информацию о том, как это настроить.

http://www.lightinject.net/

Пожалуйста, измените регистрационную строку контроллера на:

container.RegisterControllers(typeof(MVCApplicationNamespace.Controllers.HomeController).Assembly);
Другие вопросы по тегам