ASP .Net MVC 4 アプリで IoC に Autofac を使用しています。
依存関係を解決するときに、依存関係リゾルバーが異なるパラメーターに同じ値を渡す理由を理解できません。
登録方法は次のとおりです。
private void RegisterDependencyResolver()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.Register(x => new AESCryptographyService()).As<ICryptographyService>();
builder.RegisterType<AppContext>().As<IContext>();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
これが私が解決している方法ですIContext
:
var factory = _dependencyResolver.GetService<Func<string, string, string, IContext>>();
IContext context = factory(contextToken, hostUrl, request.Url.Authority);
これが私のものAppContext
です:
internal class AppContext : IContext
{
public AppContext(string contextToken, string hostUrl, string appUrl)
{
AppUrl = appUrl;
HostUrl = hostUrl;
ContextToken = contextToken;
}
public string AppUrl { get; private set; }
public string ContextToken { get; private set; }
public string HostUrl { get; private set; }
}
このスクリーンショットを見てください。、contextToken
、hostUrl
およびrequest.Url.Authority
の値は異なりますが、すべての値のコンストラクターでAppContext
の値に設定されますcontextToken
。