您好我正在尝试在asp.net核心中创建自定义DataAnnotation属性。以下是我到目前为止的情况:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class StoreDupplicateAttribute : ValidationAttribute
{
public StoreDupplicateAttribute(IStoreManager storeManager)
{
}
public override bool IsValid(object value) {
}
}
我将在我的代码中需要一个IStoreManager实例。问题是,如果我这样做,我需要在使用属性时将IStoreManager作为参数传递。
有没有办法访问IServiceProvider的实例,以便在不使用构造函数注入的情况下从中获取我的IStoreManager依赖项?
答案 0 :(得分:2)
我也找不到类似问题的答案,但后来我发现了。您应该覆盖其他虚拟IsValid方法,如下所示:
public class StoreDupplicateAttribute : ValidationAttribute
{
public StoreDupplicateAttribute()
{
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
IStoreManager storeManager = validationContext.GetService(typeof(IStoreManager)) as IStoreManager;
return ValidationResult.Success;
}
}