【问题标题】:autofac single instance per requesting type每个请求类型的 autofac 单个实例
【发布时间】:2017-01-20 21:51:59
【问题描述】:

我在 asp.net web api 2 项目中有以下 c# 类: WebService1 依赖于 IHttpClientWrapper WebService2 依赖于 IHttpClientWrapper

我如何注册 autofac,以便每次解析 webService1 时,它都会获得相同的 HttpClientWrapper 实例,而 webService2 会获得相同的 HttpClientWrapper 实例。然而,HttpClientWrapper 的每个实例仅在具有相同类型的类型对象之间共享。

任何帮助将不胜感激。

【问题讨论】:

标签: c# asp.net asp.net-web-api autofac


【解决方案1】:

我了解您尝试“每个依赖项有一个实例”。

Autofac 中没有这种开箱即用的功能,但可以这样做,例如有以下注册:

builder.RegisterType<HttpClientWrapper>().Named<IHttpClientWrapper>("WebService1").SingleInstance();
builder.RegisterType<HttpClientWrapper>().Named<IHttpClientWrapper>("WebService2").SingleInstance();

builder.Register(c => new WebService1(c.ResolveNamed<IHttpClientWrapper>("WebService1"))).InstancePerLifetimeScope();
builder.Register(c => new WebService2(c.ResolveNamed<IHttpClientWrapper>("WebService2"))).InstancePerLifetimeScope();

现在,每次解析或注入 WebService1WebService2 时,每个 WebService 都会获得相同的 IHttpClientWrapper 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2014-08-28
    相关资源
    最近更新 更多