Dependency injection Castle Windsor使用一个命令注入多个实例

Dependency injection Castle Windsor使用一个命令注入多个实例,dependency-injection,castle-windsor,Dependency Injection,Castle Windsor,我在同一命名空间中有许多类实现同一接口。 如果我想注入这些类,我需要显式地声明每个实例的命令 namespace AllClasses{ public class A<Brand> : IValidatable<Brand>{ } public class B<Customer> : IValidatable<Customer>{ } public class C<User> : IValidatable<User

我在同一命名空间中有许多类实现同一接口。
如果我想注入这些类,我需要显式地声明每个实例的命令

namespace AllClasses{

 public class A<Brand> : IValidatable<Brand>{
 }

 public class B<Customer> : IValidatable<Customer>{
 }

 public class C<User> : IValidatable<User>{
 }

 public class D<Campaign> : IValidatable<Campaign>{
 }

}


public class INeedInjection{
   public INeedInjection(IValidatable<User> uv){}

}
名称空间所有类{
公共A类:可转换表{
}
公共B类:可移动{
}
公共C类:可转换表{
}
公共D类:可转换表{
}
}
公共类虚注入{
公共IneInjection(IValidable uv){}
}
是否仍然可以使用单个命令注入上述所有类(A、B、C、D)

谢谢

更新1

大约有25个类实现了
IValidatable
,我不想为每个实现编写显式注入。所有的实现者都非常相似,所以我只是假设可能有通配符命令。

您可以使用
类型
类在程序集中注册所有
IValidatables

该示例一次在当前程序集中注册实现
IValidatable
的所有类,但是
Types
上的其他方法允许您选择要注册的任何其他程序集

_container.Register(
    Types.FromThisAssembly()
         .BasedOn(typeof (IValidatable<>))
         .WithService.Base());
\u container.Register(
Types.FromThisAssembly()
.BasedOn(类型(表))
.with.service.Base());

我不明白这个问题。您是否希望插入所有“实现者”的列表,而不是您的
INeedInjection
类当前需要的单个实例?@JoachimIsaksson,请参阅我的更新1感谢正确的术语是“批量注册”,这就是您想要做的。我不明白,对于每个实现,您仍然有两个命令(a和B),就我而言,有25条命令。如果可能的话,我正在寻找单一命令,thanks@SexyMF嗯,换句话说,你的意思是“我不想为每个实现写显式注册”,而不是像你说的“我不想为每个实现写显式注入”?@SexyMF更新了答案以涵盖注册。