加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 当它只有一个具体的时候,如何让简单的注入器自动解析接口

发布时间:2020-12-15 23:44:35 所属栏目:百科 来源:网络整理
导读:目前我有一个webapi控制器,其构造函数如下: readonly IQueryFactory queryFactory;readonly ICommandFactory commandFactory;public UserBenefitsController( IQueryFactory queryFactory,ICommandFactory commandFactory){ this.queryFactory = queryFacto
目前我有一个webapi控制器,其构造函数如下:

readonly IQueryFactory queryFactory;
readonly ICommandFactory commandFactory;

public UserBenefitsController(
    IQueryFactory queryFactory,ICommandFactory commandFactory)
{
    this.queryFactory = queryFactory;
    this.commandFactory = commandFactory;
}

我使用简单的注入器来注册这两种类型.

container.RegisterWebApiRequest<IQueryFactory,QueryFactory>();
container.RegisterWebApiRequest<ICommandFactory,CommandFactory>();

但我发现,随着我继续开发我的应用程序,我继续有很多ISomeInterface以1:1的比例解析为ISomeConcrete.

是否有可能告诉简单的注入器在接口处查找并在WebApiRequest范围内只有1个具体的情况下自动解析它?

解决方法

您可以使用批处理/自动注册来解析具体实例.
Simple Injector文档解释了它 here

例如:

ScopedLifestyle scopedLifestyle = new WebApiRequestLifestyle();

var assembly = typeof(YourRepository).Assembly;

var registrations =
    from type in assembly.GetExportedTypes()
    where type.Namespace == "Acme.YourRepositories"
    where type.GetInterfaces().Any()
    select new
    {
        Service = type.GetInterfaces().Single(),Implementation = type
    };

foreach (var reg in registrations)
    container.Register(reg.Service,reg.Implementation,scopedLifestyle);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读