カスタム データ注釈検証属性へのプロパティ インジェクションを実行できません
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 フィルター属性に対しては正常に機能しますが、データ アノテーション属性に対しては機能しません。
これを機能させるための代替方法について、どんな助けも本当に感謝しています。