ServiceStackで作成された Service があります。デフォルトで ServiceStack に付属しているため、依存性注入に Funq を使用していますが、これは他の DI コンテナーで見られる動作である可能性があります。
起動時にタイプを登録します。
this.AppContainer.RegisterAs<ConcreteDownloadServices, IDownloadServices>();`
クラスにこのコンストラクタがあります:
private readonly IDownloadServices downloadServices;
public ExampleService(IDownloadServices downloadServices)
{
this.downloadServices = downloadServices;
}
そして、私の具体的な実装のコンストラクターは次のとおりです。
public ConcreteDownloadServices()
{
this.ArbitraryProperty = "ArbitraryString";
}
すべてが正常に解決され、コードにステップインして、期待どおりに動作することを確認できます。ただし、AbritraryProperty
正しく設定されません。ステップスルーして、文字列値に設定されていることを確認できますが、コードが呼び出し元のコード (この例では、のコンストラクターExampleService
)に戻るとすぐにArbitraryProperty
null になります。
- この動作は設計によるものですか?
- 設計によるものである場合、DI を使用することは、具体的な実装のコンストラクターで何もするべきではないことを意味しますか?
- 仕様によるものである場合、自動プロパティのデフォルト値を設定する正しい方法は何ですか?
- 設計によるものではない場合、何が起こっているのでしょうか?