如何创建一个单元测试来验证所有流畅的验证器都可以被Windsor解析?

本文关键字:验证 都可以 解析 Windsor 何创建 创建 一个 单元测试 | 更新日期: 2023-09-27 18:01:57

我在我的应用程序中使用FluentValidation来验证我的实体,但我遇到了一个小问题。我的验证工厂设置为通过尝试从IValidator<EntityType>接口解析来自Windsor的验证类。

我想确保无论何时创建一个验证类,没有人忘记向Windsor注册它。

本质上,我想看看程序集中实现IValidator<EntityType>接口的所有类,并调用WindsorContainer.Resolve(typeof(IValidator<EntityType>))来解析该类型,其中EntityType可以是程序集中的任何类。到目前为止,使用反射,我已经能够拉出所有类是从通用接口IValidator<>派生的,但我不知道如何从那里进行。问题是,为了正确调用Windsor,我必须找到某种方法来提取通用中使用的实际实体,而我不知道如何做到这一点。

有更简单的方法吗?

如何创建一个单元测试来验证所有流畅的验证器都可以被Windsor解析?

我想确保无论何时创建一个验证类,没有人忘记向Windsor注册它。

你为什么要这样做?您应该有一个安装程序,可以自动发现这些验证类并为您注册它们。然后,您只需要测试是否正确编写了安装程序。

事实上,有人添加了一个类来实现IValidator<TEntity>的一些TEntity不应该破坏你的代码!

问题是我必须找到一些方法来提取通用中使用的实际实体,以便正确调用Windsor,我不知道如何做到这一点。

你想要Type.GetGenericArguments