2

Windsor 2.5.2を使用すると、次のように機能します。

public class Foo
{
    public IBar Bar { get; set; }
}

IBarの作成を遅らせるために、これも機能します。

public class Foo
{
    public Foo(Func<IBar> barFactory)
    { 
    }
}

ただし、プロパティインジェクションをと組み合わせるとFunc<T>、次の結果がnull参照になります。

public class Foo
{
    public Func<IBar> Bar { get; set; }
}

ウィンザーに注入させるにはどうすればよいFunc<IBar>ですか?

4

1 に答える 1

2

素晴らしい質問ですね、ポール。よろしくお願いします。

暗黙的に登録されFuncた s の場合、Windsor はプロパティを見て、それがオプションであることを認識し、それを取得しようとすることを気にしません。なぜなら、それはオプションだからです。

設定するには、ファクトリを明示的に登録します

container.Register(Component.For<Func<IBar>>().AsFactory().Lifestyle.Transient);

または、依存関係を(メソッドをComponentModel使用してRequire)必須としてマークします。これは、おそらくIComponentModelConstructionContributor

于 2011-02-14T07:48:21.393 に答える