【发布时间】:2014-06-18 01:54:35
【问题描述】:
我在尝试将 FluentValidation 与 Unity 集成时遇到了一些麻烦。
我有一个工厂类
public class UnityValidatorFactory : FluentValidation.ValidatorFactoryBase
{
private readonly IUnityContainer _container;
public UnityValidatorFactory()
{
_container = null;
}
public UnityValidatorFactory(IUnityContainer container)
{
_container = container;
}
public override FluentValidation.IValidator CreateInstance(Type validatorType)
{
return _container.Resolve(validatorType) as FluentValidation.IValidator;
}
}
问题是它不会在数据类中实例化
public class Payment : IValidatableObject
{
private readonly IValidator _validator = new PaymentValidator();
public string paymentType { get; set; }
//etc
public Payment(IValidatorFactory validatorFactory)
{
**//ValidatorFactory is always null!**
_validator = validatorFactory.GetValidator(typeof(Payment));
}
}
这是我试图用统一注册工厂类的代码
container.RegisterType<IValidatorFactory, UnityValidatorFactory>(new ContainerControlledLifetimeManager());
但是工厂始终为空。知道我做错了什么吗?
【问题讨论】:
-
你是如何创建/解决
Payment的? -
它是一个web api应用程序,付款在控制器收到的请求中
-
你的意思是Payment是控制器上的action方法的参数?您能否更新您的问题以显示这一点?
标签: c# unity-container ioc-container fluentvalidation