2009-08-02 10 views
2

私は城ウィンザーを使用して初心者です。 Apress Pro Mvcの本で紹介されました。私が働いているプロジェクトでは、私はmvcコントローラ工場の代わりにcastlewindsorコントローラ工場を使用します。だから私はパラメータ化されたコンストラクタを持つことができ、私は依存関係を注入することができます。 コンストラクタを経由せずにコントローラクラスのプロパティに値を注入するようにwindsorcontrollerファクトリに指示する方法はありますか? 私がこれをやりたい理由は、ログの依存関係があるためです。 Emailler Dependency;データベースの依存関係。テーマエンジンdEpendency;私はコンストラクタでこの多くのパラメータパラメータを使用したくないです。CastleWindsorもクラスフィールドを埋めています

答えて

2

デフォルトでは、ウィンザーはサービスの実装を解決すると、すべてのプロパティに満たすことができるパブリックセッターを設定します。

ただし、インスタンスが常に有効な状態になることを保証するために、依存関係の解決をコンストラクタに入れることは意味があることに注意してください。ユニットテストのシナリオを考えてみましょう。ここで、テストを書く人は、どの依存関係を提供する必要があるかを知る必要があります。すべての依存関係がc'torに入ると、テスト担当者はテストされたインスタンスに必要なすべての依存関係(スタブまたはモック)を提供するしかありません。デフォルトで

とにかく、あなたの質問については、ウィンザーサポートC'tor 財産注入

+0

とそれがプロパティを埋めるのではなくコンストラクタである場合、どこを見ているべきですか? – user149383

+0

私は、ウィンザーのユーザーグループにあなたのコードを投稿したいと思います。あなたはおそらくすぐにヘルプを得るでしょう –

1

城ウィンザーは、自動的にそれを埋めるために方法を知っている公共のセッターを持つ任意のプロパティを記入します。

あなたがいる限り、コンテナは、それはそれを解決し、注入しようとしSomeDependencyを解決する方法を知っているように設定されるクラスに

public MyClass { 
    public SomeDependency {get; set;} 
} 

を持っている場合、これが意味しています。

このデフォルトの動作が面倒なことがあることがあります。 This facilityは、プロセスをきめ細かく制御できます。

関連する問題