0

次のような基本クラスがあります

public class BaseClass
{ 
    public ISomeObject Property { get; set; } 
}

および BaseClass から継承された ChildClass.I は、ChildClass コンストラクター内で BaseClass の Property を使用する必要がありますが、必要に応じて IoC によって初期化されず、値が null です。そして、ChildClass のメソッド内で使用すると、Property が初期化されます。私は何を間違っていますか?

ISomeObjectをICコンテナに登録する方法は次のとおりです

container.Register(
Component.For<ISomeObject>()
.ImplementedBy<WebSomeObject>().LifestyleSingleton());
4

1 に答える 1

2

これは Castle Windsor の問題ではなく、.NET の動作の問題です。コンストラクターは、クラスの新しいインスタンスをインスタンス化する .NET フレームワークの一部として実行されます。構築が完了した後でのみ、他のコード (Windsor など) がプロパティを設定したり、メソッドを実行したりできます。

子クラスのコンストラクター内で使用できるようにする場合はProperty、それをパラメーターとしてコンストラクターに追加しBaseClass、子クラスに一致するコンストラクターを設定する必要があります。

于 2013-12-10T15:31:21.000 に答える