通用ValidationAttribute获取唯一值c#

时间:2018-05-28 20:10:20

标签: c# asp.net .net core

是否有某种方式使用泛型P属性示例:

public class XXX {

[CheckUnique(AppDbContext, typeof(ClassName), "propname")]
public string Name {get;set;}

}

public class CheckUnique<P>: ValidationAttribute
    where P: class
{

    private readonly AppDbContext _appDbContext;
    private readonly Type EntityType;
    private readonly string property;

    public CheckUnique(AppDbContext appDbContext, Type entityType, string propertyName)
    {
        _appDbContext = appDbContext;
        EntityType = entityType;
        property = propertyName;
    }

    public override bool IsValid(object value)
    {
        ParameterExpression orderparam = Expression.Parameter(typeof(P), "x"); // x
        Expression<Func<P, bool>> sortExpression = Expression.Lambda<Func<P, bool>>(Expression.Convert(Expression.Property(orderparam, property), typeof(bool)), orderparam); // x => x.ColumnName
        var count = _appDbContext.Set<P>().Where(sortExpression);
        if (count.Any())
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}

我收到错误: &#34;泛型类型无法从ValidationAttribute ...&#34;

派生

0 个答案:

没有答案
相关问题