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更新了答案以涵盖注册。