编程语言
首页 > 编程语言> > c# – 当它只有一个具体的时候,如何让简单的注入器自动解析接口?

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

作者:互联网

目前我有一个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);

标签:c,asp-net-web-api,simple-injector
来源: https://codeday.me/bug/20190716/1476795.html