我在我的ASP .NET MVC应用程序中有奇怪的问题。我有一些控制器和一些IHelper
和它的执行Helper
这个控制器。当我使用如下的帮手:为什么IoC对控制器的创建有影响,以及如何解决?
public ActionResult SomeAction()
{
var hepler = new Helper();
helper.DoStuff();
...
}
每件事情都可以。但是,当我尝试注入这个帮助的属性控制器:
public IHelper Helper { private get; set; }
...
public ActionResult SomeAction()
{
Helper.DoStuff();
...
}
,并在我的IOC配置I类有:
ObjectFactory.Initialize(x =>
{
// Helpers
x.For<IHelper>().Use<Helper>();
...
x.FillAllPropertiesOfType<IHelper>().Use<Helper>();
...
}
事情是我有不同的助理,经理,仓库的LOT以及在IoC配置类中使用IoC模式初始化的其他内容,并成功注入到每个控制器中。但磨片我尝试注入这个Helper
我得到:
InvalidOperationException: An error occurred when trying to create a controller of type 'MyController'. Make sure that the controller has a parameterless public constructor.
我知道,这个问题是在国际奥委会和在此Helper
因为我GOOGLE了this,从IOC配置类中删除Helper
,用它像var hepler = new Helper();
,一切运行良好。但我不明白是什么问题?有没有人看到过这个问题?我甚至不能understan如何确保控制器具有一个无参数的公共构造函数和控制器性能之一IoC的初始化可以与当一切的伟大工程的另一个助手等
编辑
PS我正在使用StructureMap IoC框架和ASP .NET MVC 4.0。
这可能有助于提及您正在使用StructureMap。 – 2013-03-19 11:33:05
不确定你正在使用哪个IoC系统,但是你是否尝试过使用'set'' public'而不是'private'? – 2013-03-19 11:35:17
我刚刚注意到这一点......它是'get',它是私人的,而不是'set'。这甚至会工作吗?由于该财产甚至没有被使用,目前尚不清楚其意图。 – David 2013-03-19 11:44:03