我几天前刚刚使用过StructureMap。我使用StructureMap来收集所有验证器类,如下面的代码。
public class BaseClassA {}
public class ClassB : BaseClassA {}
public class ClassC : BaseClassB {}
public BaseClassAValidator : IValidator<BaseClassA>() {}
在StructureMap中,我只为IValidator<BaseClassA>
类注册BaseClassAValidator
接口。但是当我调用IValidator<ClassB>
或IValidator<ClassC>
时,我想得到相同的结果,这意味着StructureMap应该返回IValidator<T>
,其中T是被请求类的类或父类。
有可能吗?或者我需要手动调用它。
答案 0 :(得分:0)
从答案How to use a convention for IRepository<T> with StructureMap mapping
var c = new Container(x =>
{
x.Scan(scan =>
{
// there are other options to expand which assemblies to scan for types
scan.TheCallingAssembly();
scan.ConnectImplementationsToTypesClosing(typeof (IValidator<>));
});
});
现在,如果您请求IValidator<ClassC>
,则应获得BaseClassCValidator
。