如何在ASP.NET MVC中配置LightInject?

时间:2014-08-18 15:07:29

标签: asp.net-mvc-4 inversion-of-control simple-injector light-inject

我在mvc中使用SimpleInjector和这段代码

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>();
    }
}

但现在我想在我的mvc应用程序中测试 LightInject Ioc但是如何?

我写了这段代码

[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());

    }
}

enter image description here

但是告诉我这个错误

No parameterless constructor defined for this object. 

任何人都可以帮我编写在MVC中工作的等效代码吗?

示例代码: Download

2 个答案:

答案 0 :(得分:4)

我是LightInject的作者,我想帮助你。

这种静态初始化方法?从哪里调来。 您收到此错误的原因可能是因为初始化代码未执行。

如果您想获得进一步的帮助,查看global.asax.cs中的内容是很有价值的。

此页面还包含有关如何进行设置的信息。

http://www.lightinject.net/#mvc

答案 1 :(得分:0)

请将控制器注册行更改为:

container.RegisterControllers(typeof(MVCApplicationNamespace.Controllers.HomeController).Assembly);