Общий ValidationAttribute для уникальных значений c # - PullRequest
0 голосов
/ 28 мая 2018

Есть ли способ использовать пример общего атрибута 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;
        }
    }

}

Я получаю сообщение об ошибке: «Универсальный тип не может быть производным от ValidationAttribute ...»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...