global.asax でアプリケーションの開始時にワンタイム コードを実行する必要があります。私はすでに autofac を起動して多数の登録を実行していますが、問題は、global.asax 内にあるSecurityConfig.RegisterActivities()に依存関係を解決または挿入する方法がわからないことです。
autofac コンテナーを使用して、global.asax の依存関係を自分で手動で解決しようとしましたが、例外がスローされました。
この依存関係をそのクラスに取得するにはどうすればよいですか?
protected void Application_Start()
{
var builder = new ContainerBuilder();
DependencyRegistrar dr = new DependencyRegistrar();
dr.Register(builder);
new SecurityConfig().RegisterActivities(); // this needs injecting into or resolving of IServiceManager instance
}
public class DependencyRegistrar
{
public virtual IContainer Register(ContainerBuilder builder)
{
builder.RegisterType<ServiceManager>().As<IServiceManager>().InstancePerHttpRequest();
builder.RegisterType<SecurityConfig>().AsSelf().PropertiesAutowired().InstancePerDependency();
}
}
public class SecurityConfig
{
public void RegisterActivities()
{
ServiceManager.DoSomething();
}
public IServiceManager ServiceManager { get; set; }
}