我正在努力让 FluentValidation 与温莎城堡一起工作。我已经有了温莎城堡的包装纸。这是代码:

public class ResolveType  
{  
    private static IWindsorContainer _windsorContainer;  

    public static void Initialize( IWindsorContainer windsorContainer )  
    {  
        _windsorContainer = windsorContainer;  
    }  

    public static T Of<T>()  
    {  
        return _windsorContainer.Resolve<T>();  
    }  
}  

我正在尝试构建 FluentValidation 工厂,如下所述 http://www.jeremyskinner.co.uk/2010/02/22/using-fluidation-with-an-ioc-container

这篇文章使用了 StructureMap,但我想我可以将它改编为温莎城堡,如下所示:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

    public override IValidator CreateInstance( Type validatorType)
    {
        return ResolveType.Of<validatorType>();
    }
}

请注意,我只是尝试调用我的包装器,以便 Windsor 可以解析类型引用。

问题是这不能编译。我收到“找不到类型或命名空间名称“validatorType”(您是否缺少 using 指令或程序集引用?)”

我怎样才能做到这一点?

有帮助吗?

解决方案

将此方法添加到您的 ResolveType 班级:

public static object Of(Type type) {
  return _windsorContainer.Resolve(type);
}

然后在你的 CastleWindsorValidatorFactory:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase {
    public override IValidator CreateInstance(Type validatorType) {
        return ResolveType.Of(validatorType) as IValidator;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top