public TQueryBuilder CreateProxyInterceptor <TModel, TQueryBuilder>( RepositoryConfiguration config, MongoCollection collection) where TQueryBuilder : class, IQueryBuilder <TModel> where TModel : class { var customMethods = this.GetOrAddMethods <TQueryBuilder>(); var sharedIntermediateQueryData = new IntermediateQueryDataContainer(); var queryBuilder = new StandardQueryExecutor <TModel>(config, collection, sharedIntermediateQueryData); var interceptor = new QueryInterceptor <TModel>(queryBuilder, this.Parser, sharedIntermediateQueryData); var proxy = _generator.CreateInterfaceProxyWithoutTarget <TQueryBuilder>(interceptor); return(proxy); }
public QueryInterceptor(StandardQueryExecutor <TModel> queryBuilder, MethodConventionParser parser, IntermediateQueryDataContainer queryData) { this.QueryBuilder = queryBuilder; this.QueryData = queryData; this.Parser = parser; }