OK ウィンザー城に関する情報が多すぎると思います。これらのキーワードを検索するとすべての例が得られるからです。率直に言って、これを適切にトラブルシューティングする方法について十分に理解していません。私はこの時点でほとんど運がなく、かなりの数の順列を試しました。
IUnitOfWorkFactory
シングルトンとしてインスタンス化したい があります。それで、Castle Windsor をインストールし、次のようなコードを少し書きます。
iocContainer = new WindsorContainer()
.Install(FromAssembly.This());
var propInjector = iocContainer.Register(
Component.For<IUnitOfWorkFactory>()
.LifestyleSingleton()
.Instance(new NHUnitOfWorkFactory())
);
propInjector.Resolve<IUnitOfWorkFactory>();
これは私のApplication_Start
メソッドから呼び出されます。
私は次のAccountController
ように配線しています:
public class AccountController : SecureController
{
public IUnitOfWorkFactory UnitOfWorkFactory { get; set; }
...
...私が理解できる限り、これは単に「機能する」はずです(ただし、方法は聞かないでください)。しかし、プロパティを使用しようとすると、常に null になります。
ばかげた単純なものが欠けているようですが、それが何であるかわかりません。
私も試してみました
var propInjector = iocContainer.Register(
Component.For<IUnitOfWorkFactory>()
.ImplementedBy<NHUnitOfWorkFactory>()
.LifestyleSingleton()
);
成功しませんでした。
私は何を間違っていますか?
結論
ここでいくつかの手順がありませんでした。チュートリアルに従ってインストーラーとブートストラップを作成しましたが、サービスを間違った場所に登録しました... コントローラー ファクトリを作成する前に。今、私のブートストラップは次のようになります。
iocContainer = new WindsorContainer()
.Install(FromAssembly.This());
var controllerFactory = new WindsorControllerFactory(iocContainer.Kernel);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
iocContainer.Register(
Component.For<IUnitOfWorkFactory>()
.ImplementedBy<NHUnitOfWorkFactory>()
.LifestyleSingleton()
);
...そして、私のプロパティインジェクションはもはやnullではありませんでした....今、私は他の87の問題をデバッグする必要があります...