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