嗨,我正试图在DataAnnotation核心中创建一个自定义的asp.net属性。以下是我到目前为止所拥有的:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class StoreDupplicateAttribute : ValidationAttribute
{
public StoreDupplicateAttribute(IStoreManager storeManager)
{
}
public override bool IsValid(object value) {
}
}在我的代码中,我需要一个IStoreManager.The问题的实例,如果我这样做的话,当我使用该属性时,我需要将IStoreManager作为一个参数传递。
是否有任何方法可以访问IServiceProvider的实例,从而在不使用构造函数注入的情况下从它获取IStoreManager依赖项?
发布于 2016-09-17 08:18:27
我也找不到一个类似的问题的答案,但后来我想出来了。您应该重写其他虚拟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;
}
}https://stackoverflow.com/questions/36281367
复制相似问题