我在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());
}
}
但是告诉我这个错误
No parameterless constructor defined for this object.
任何人都可以帮我编写在MVC中工作的等效代码吗?
示例代码: Download
答案 0 :(得分:4)
我是LightInject的作者,我想帮助你。
这种静态初始化方法?从哪里调来。 您收到此错误的原因可能是因为初始化代码未执行。
如果您想获得进一步的帮助,查看global.asax.cs中的内容是很有价值的。
此页面还包含有关如何进行设置的信息。
答案 1 :(得分:0)
请将控制器注册行更改为:
container.RegisterControllers(typeof(MVCApplicationNamespace.Controllers.HomeController).Assembly);