我在使用开放的泛型类型时遇到了依赖注入问题。
要现在注册一个验证器,我必须写:
container.RegisterType<IValidator<User>, UserValidator>();我需要这样的东西:
container.RegisterType(typeof(IValidator<>), typeof(Validator<>));UserValidator类在哪里
public class UserValidator : Validator<User>
{
public UserValidator()
{
RuleFor(user => user.Email).EmailAddress();
}
}发布于 2018-08-24 18:42:24
统一容器确实支持开放泛型的注册(here是这样做的一个例子),但是您需要映射到具体的、非泛型类,内置的功能将解析到封闭泛型类的开放泛型接口。
你的注册尝试
container.RegisterType(typeof(IValidator<>), typeof(Validator<>));将解析为Validator<User>,这显然是您不想要的。没有办法使用内置功能来告诉它“我真的希望您解析到Validator<User>的非泛型子类”。
相反,我建议您在IUnityContainer上创建一个扩展方法,该方法将反映程序集,寻找非泛型验证器,并分别注册这些验证器。
https://stackoverflow.com/questions/52009795
复制相似问题