在 MVC 中使用 Castle Windsor 和 FluentValidation

发布于 2024-09-02 02:07:06 字数 1084 浏览 2 评论 0原文

我正在努力让 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>();
    }
}

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

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

如何才能完成这项工作?

I'm working on getting FluentValidation working with Castle Windsor. I already have a wrapper around Castle Windsor. Here is the code for that:

public class ResolveType  
{  
    private static IWindsorContainer _windsorContainer;  

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

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

I am trying to build the FluentValidation factory as is explained at http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container

The article uses StructureMap, but I thought I could adapt it to Castle Windsor like this:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

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

Notice, I'm just trying to call into my wrapper so that Windsor can resolve the type reference.

The problem is that this doesn't compile. I get 'The type or namespace name 'validatorType' could not be found (are you missing a using directive or an assembly reference?)'

How can I make this work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天暗了我发光 2024-09-09 02:07:06

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

Add this method to your ResolveType class:

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

Then in your CastleWindsorValidatorFactory:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase {
    public override IValidator CreateInstance(Type validatorType) {
        return ResolveType.Of(validatorType) as IValidator;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文