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

时间:2011-07-14 02:36:13

标签: c# generics castle-windsor

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

我想确保每当验证类创建时,没有人忘记将其注册到Windsor。

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

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

  

我想确保每当验证类创建时都没有人忘记将它注册到Windsor。

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

有人为某些IValidator<TEntity>添加了一个实现TEntity的类的事实不应该破坏您的代码!

  

问题是我必须找到一些方法来拉出通用中使用的实际实体才能正确调用Windsor,而我却不知道如何做到这一点。

你想要Type.GetGenericArguments