首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通用地注册所有验证器

问如何通用地注册所有验证器
EN

Stack Overflow用户
提问于 2018-08-24 18:13:01
回答 1查看 262关注 0票数 0

我在使用开放的泛型类型时遇到了依赖注入问题。

要现在注册一个验证器,我必须写:

代码语言:javascript
复制
container.RegisterType<IValidator<User>, UserValidator>();

我需要这样的东西:

代码语言:javascript
复制
container.RegisterType(typeof(IValidator<>), typeof(Validator<>));

UserValidator类在哪里

代码语言:javascript
复制
 public class UserValidator : Validator<User>
 {
        public UserValidator()
        {
            RuleFor(user => user.Email).EmailAddress();
        }
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 18:42:24

统一容器确实支持开放泛型的注册(here是这样做的一个例子),但是您需要映射到具体的、非泛型类,内置的功能将解析到封闭泛型类的开放泛型接口。

你的注册尝试

代码语言:javascript
复制
container.RegisterType(typeof(IValidator<>), typeof(Validator<>));

将解析为Validator<User>,这显然是您不想要的。没有办法使用内置功能来告诉它“我真的希望您解析到Validator<User>的非泛型子类”。

相反,我建议您在IUnityContainer上创建一个扩展方法,该方法将反映程序集,寻找非泛型验证器,并分别注册这些验证器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52009795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档