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
をグーグルで検索し、 IoC 構成クラスから削除して、同様に使用し、すべてが正常に機能したためです。しかし、何が問題なのか理解できませんか?以前にそのような問題を見た人はいますか?コントローラーにパラメーターのないパブリックコンストラクターがあり、コントローラープロパティの 1 つの IoC 初期化が、別のヘルパーなどですべてがうまく機能する場合に関連付けられることを確認する方法を理解することさえできません。Helper
var hepler = new Helper();
編集
_ StructureMap IoC フレームワークと ASP .NET MVC 4.0 を使用しています。