public ReservedQueryRule <T> Reserve <T>(IQueryRule queryRule) where T : class { if (queryRule == null) { throw new ArgumentNullException(nameof(queryRule)); } var type = typeof(T); var methods = new List <QueryRuleMethodDescriptor>(); var ignores = new List <string>(); ignores.AddRange(QueryRulesIgnored); foreach (var method in Methods) { if (!method.CanApply(type)) { continue; } methods.Add(method); ignores.AddRange(method.QueryRulesIgnored); } ignores = ignores.Distinct().ToList(); return(new ReservedQueryRule <T> { Instance = queryRule, Name = QueryRuleName, Methods = methods, QueryRulesIgnored = ignores }); }
public IQueryable <T> Apply <T>(IQueryRule queryRule, IQueryable <T> queryable) { if (queryRule == null) { throw new ArgumentNullException(nameof(queryRule)); } if (queryable == null) { throw new ArgumentNullException(nameof(queryable)); } var result = queryable; var type = typeof(T); foreach (var method in Methods) { if (!method.CanApply(type)) { continue; } result = method.Apply(queryRule, result); } return(result); }
internal IQueryable <T> Apply <T>(IQueryRule queryRule, IQueryable <T> queryable) { if (queryable == null) { return(null); } var genericType = typeof(T); return((IQueryable <T>)(IsGenericMethod ? MethodInfo.MakeGenericMethod(genericType).Invoke(queryRule, new object[] { queryable }) : MethodInfo.Invoke(queryRule, new object[] { queryable }))); }
public DbPermissionCommandGenerator(IDbProviderFactory dbFactory, IDbDalcView[] views) : base(dbFactory, views) { Rules = new IQueryRule[0]; }