【发布时间】:2013-03-30 14:04:00
【问题描述】:
我有一个如下所示的 ValidationAttribute:
public class RegistrationUniqueNameAttribute : ValidationAttribute
{
public IRepository<User> UserRepository { get; set; }
public override bool IsValid(object value)
{
//use UserRepository here....
}
}
在我的容器设置中(在应用程序启动中)我有这个:
builder.Register(c => new RegistrationUniqueEmailAttribute
{
UserRepository = c.Resolve<IRepository<User>>()
});
但是,在调试时,UserRepository 的值始终为 null,因此不会注入该属性。
我的容器设置有误吗?
我真的不想使用DependencyResolver.Current.GetService<IRepository<User>>(),因为这不是可测试的......
【问题讨论】:
-
ValidationAttributes 不是由 Autofac 创建的。 CLR 本身负责创建它们。
-
这个问题暗示它应该工作? stackoverflow.com/questions/12505245/…
-
这仅在您覆盖默认
DataAnnotationsModelValidator时有效,但我在 Autofac 源代码或在线中找不到任何相关信息。也许我错过了什么。 -
@Steven 不,你没有遗漏任何东西。在经历了类似的野鹅追逐之后,我用 cmets 装饰了这个冒犯性的问题。
标签: inversion-of-control autofac