我有以下接口:
public interface IValidator
{
Task<Response> Validate(object request);
}
public interface IFirstChildValidator : IValidator
public interface ISecondChildValidator : IValidator
我有一些实现第一个和第二个验证器的服务。
在使用Scrutor之前,我手动注册了服务,一切都按预期工作:
services.AddScoped<IFirstChildValidator, FirstBar>();
services.AddScoped<IFirstChildValidator, FirstFoo>();
services.AddScoped<ISecondChildValidator, SecondBar>();
services.AddScoped<ISecondChildValidator, SecondFoo>();
我可以为我的其他服务注入一个特定的验证器:
private readonly IEnumerable<IFristValidator> _firstValidators;
// ctor injection
但是,当我尝试使用 Scrutor 自动注册(以第一个验证器为例)时:
services.Scan(scan => scan
.FromAssemblyOf<IFirstChildValidator >()
.AddClasses(classes => classes
.InNamespaces("my.namespace")
.AssignableTo<IFirstChildValidator>())
.UsingRegistrationStrategy(RegistrationStrategy.Replace(ReplacementBehavior.ImplementationType))
.AsImplementedInterfaces()
.WithScopedLifetim();
注入类型为父验证器(即IValidator),具体实现的注入数组留空。
如何实现自动注册为特定接口作为类型?