C# 从从接口实现的不同类调用方法

C# 从从接口实现的不同类调用方法,c#,.net,oop,design-patterns,simple-injector,C#,.net,Oop,Design Patterns,Simple Injector,我有一个接口,由两个类继承,并实现其方法Validate(这里没有问题) 好吧,也许评论部分的一些人是正确的,问题不可能在这里。 所以我猜它来自SimpleInjector,因为我注册了如下界面: container.RegisterCollection(typeof(IValidator)); 这可能是问题所在吗 好吧,你们说得对,问题是我如何将服务注册到我的简单注入器 应该是这样的: var myValidators = new List<Type>(){ typeof(Val

我有一个接口,由两个类继承,并实现其方法Validate(这里没有问题)

好吧,也许评论部分的一些人是正确的,问题不可能在这里。 所以我猜它来自SimpleInjector,因为我注册了如下界面:

container.RegisterCollection(typeof(IValidator));

这可能是问题所在吗

好吧,你们说得对,问题是我如何将服务注册到我的简单注入器

应该是这样的:

var myValidators = new List<Type>(){ typeof(ValidatorA), typeof(ValidatorB) };
container.RegisterCollection(typeof(IValidator), myValidators);
var myValidators=newlist(){typeof(ValidatorA),typeof(ValidatorB)};
容器注册收集(类型(IValidator),myValidators);
只是简单解释一下


没有错误的原因是,应用程序在我注册时识别我的IValidator。它没有从实现接口的类调用Validate方法的原因是,这些类没有在SimpleInjector中注册为子类。因此不会显示任何错误,因为注册到SimpleInjector只需要父类(此上下文中的接口)。

应该可以。你有错误吗?如果在
Validate
方法中放置断点,它们不会被命中?没有错误。。。是的,当我尝试在验证子类时,断点没有命中。Typo
=>公共接口validator B:ivalidater
?validator B应该是类,而不是接口除了示例代码中的Typo之外,您的查询的行为肯定与您预期的一样。在每个Validate()方法中放置一个断点,然后运行调试器。
container.RegisterCollection(typeof(IValidator));
var myValidators = new List<Type>(){ typeof(ValidatorA), typeof(ValidatorB) };
container.RegisterCollection(typeof(IValidator), myValidators);