我在同一个命名空间中有很多类实现相同的接口 如果我想注入这些类,我需要为每个实例显式声明命令。
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)?
由于
更新1
有大约25个类实现IValidatable
,我不想为每个实现编写显式注入。所有的实现者都非常相似,所以我假设可能还有通配符命令。
答案 0 :(得分:2)
您可以使用IValidatables
类在程序集中注册所有Types
;
该示例立即在当前程序集中注册实现IValidatable<T>
的所有类,但Types
上的其他方法允许您选择要注册的任何其他程序集;
_container.Register(
Types.FromThisAssembly()
.BasedOn(typeof (IValidatable<>))
.WithService.Base());