我正在为一个.Net Core项目使用版本为“10.3.3”的FluentValidation.AspNetCore库。
要注册验证器,我使用以下代码:
services.AddValidatorsFromAssemblyContaining<TestValidator>();
例如,我有一个名为Test的类,我可以像这样注入该类的验证器:
public class Service : IService
{
private readonly IValidator<Test> _testValidator;
public Service(IValidator<Test> testValidator)
{
_testValidator = testValidator;
}
}
但我不知道如何将所有已注册的验证器注入到我的服务构造函数中,使其成为IEnumerable实例。那么正确的方法是什么?
IEnumerable<IValidator<Test>>
吗? - StevenIEnumerable<IValidator<object>>
并且让这个列表包含所有已注册的验证器。由于 .NET 类型系统的“限制”,这是不可能的。这与 variance and contra-variance 的工作方式有关。你可以尝试注入某种中介实现,它可以从IServiceProvider
中动态解析所需的验证器,而不是注入所有验证器。 - Steven