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