2010-03-12 78 views
1

我刚刚在几天前使用了StructureMap。我使用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

从答案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

+0

这是我的错误。我没有看到StackOverflow不显示我所有的问题。我只是更新了这个问题。让我们来看看它。 – 2011-08-12 04:53:27