我无法对自定义数据注释验证属性执行属性注入
public class CustomValidationAttribute : ValidationAttribute
{
public ILogger Logger { get; set; }
public CustomValidationAttribute(string keyPointer)
{ }
public override bool IsValid(object value)
{
// Implementation here
return true;
}
}
现在,在我的 MVC Application_Start 方法中,我有以下 Autofac 配置:
// Autofac Ioc Container
var builder = new ContainerBuilder();
builder.RegisterType<Logger>().As<ILogger>().InstancePerHttpRequest();
builder.RegisterType<CustomValidationAttribute>()
.OnActivating(e =>
{
e.Instance.Logger = e.Context.Resolve<ILogger>();
});
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
我还尝试了自动装配功能:
builder.RegisterType<CustomValidationAttribute>().PropertiesAutowired();
我猜数据注释上的属性的属性在编译时被解析并且不受运行时注入的影响。此方法适用于 MVC 过滤器属性,但不适用于数据注释属性。
任何帮助都非常感谢您使用替代方法来完成这项工作。