【问题标题】:Using Castle Windsor with FluentValidation In MVC在 MVC 中使用 Castle Windsor 和 FluentValidation
【发布时间】:2010-05-13 05:40:00
【问题描述】:

我正在努力让 FluentValidation 与 Castle Windsor 合作。我已经有一个围绕温莎城堡的包装。这是代码:

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-fluentvalidation-with-an-ioc-container 中所述

这篇文章使用了 StructureMap,但我认为我可以像这样将它改编为 Castle Windsor:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

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

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

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

我怎样才能做到这一点?

【问题讨论】:

    标签: c# asp.net-mvc castle-windsor fluentvalidation


    【解决方案1】:

    将此方法添加到您的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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      相关资源
      最近更新 更多