在 MVC 中使用 Castle Windsor 和 FluentValidation
-
26-09-2019 - |
题
我正在努力让 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;
}
}
不隶属于 StackOverflow