我的 ASP .NET MVC 应用程序中有一个奇怪的问题。我有一些控制器和一些控制器IHelper,它是Helper这个控制器的实现。当我像下面这样使用这个助手时:
public ActionResult SomeAction()
{
    var hepler = new Helper();
    helper.DoStuff();
    ...
}
一切都好。但是当我尝试将此帮助器作为控制器的属性注入时:
public IHelper Helper { private get; set; }
...    
public ActionResult SomeAction()
    {            
        Helper.DoStuff();
        ...
    }
在我的 IoC 配置类中,我有:
ObjectFactory.Initialize(x =>
          {
              // Helpers
              x.For<IHelper>().Use<Helper>();              
              ...
              x.FillAllPropertiesOfType<IHelper>().Use<Helper>();
              ...
          }
问题是我在 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.
我知道问题出在 IoC 中,Helper因为我用 google 搜索了这个,Helper从 IoC 配置类中删除,像使用它一样var hepler = new Helper();,一切正常。但我不明白问题出在哪里?以前有人见过这样的问题吗?我什至无法理解如何确保控制器具有无参数的公共构造函数,并且当一切都适用于另一个助手等时,控制器属性之一的 IoC 初始化可以相关联。
编辑
_ 我正在使用 StructureMap IoC 框架和 ASP .NET MVC 4.0。