私のサービスはユーティリティ クラスを使用しており、そのユーティリティ クラスにはいくつかのパブリック プロパティがあります。これらのパブリック プロパティが設定されていることを確認するために呼び出す必要がある特別なものはありますか?
サービスは ASP.NET ホストを使用します。Global.ASAX 内で、新しい AppHostBase を宣言しました。
public class MyServiceHost : AppHostBase
{
public MyServiceHost() : base("My Service Host", typeof(ServiceLibrary).Assembly) {}
public override void Configure(Funq.Container container)
{
container.Register<IDbConnectionFactory>(dbConFactory);
container.RegisterAutoWired<UtilityLibrary>();
container.RegisterAutoWired<RepositoryLibrary>();
}
}
私のリポジトリ ライブラリとユーティリティ ライブラリの両方にメイン クラスがあります。これにより、クラスがコンテナを受け取り、より具体的なユーティリティとリポジトリが登録される場合があります。
public class UtilityLibrary
{
public UtilityLibrary(Funq.Container container)
{
container.RegisterAutoWired<WidgetAActions>();
container.RegisterAutoWired<WidgetBActions>();
}
}
以下の例では、RepositoryLibrary クラスのコンストラクターに WidgetARepository が設定されています。WidgetARepository を含む RepositoryLibrary クラスは、AppHost のConfigure
メソッドでコンテナに提供されました (上記の最初のスニペット)。それでも、WidgetARepository (以下) は設定されません。
public class WidgetAActions
{
public WidgetARepository WidgetARepository { get; set; }
public WidgetA Get(string id)
{
var item = this.WidgetARepository.Get(id);
if (item == null) { return null; }
// Do something else
return item;
}
}
手動で呼び出す必要がありますResolve()
か? これを行うと、インジェクションの目的が無効になるようです。