private AggregationDescriptor <T> _SetInnerAggregation <TAggregation>( string key, Func <TAggregation, TAggregation> selector , Action <IAggregationContainer, TAggregation> setter ) where TAggregation : IAggregationDescriptor, new() { var innerDescriptor = selector(new TAggregation()); var descriptor = new AggregationDescriptor <T>(); setter(descriptor, innerDescriptor); var bucket = innerDescriptor as IBucketAggregator; IAggregationContainer self = this; if (self.Aggregations == null) { self.Aggregations = new Dictionary <string, IAggregationContainer>(); } if (bucket != null && bucket.Aggregations.HasAny()) { IAggregationContainer d = descriptor; d.Aggregations = bucket.Aggregations; } self.Aggregations[key] = descriptor; return(this); }
private AggregationDescriptor <T> _SetInnerAggregation <TAggregation>( string key, Func <TAggregation, TAggregation> selector , Action <AggregationDescriptor <T>, TAggregation> setter ) where TAggregation : IAggregationDescriptor, new() { var innerDescriptor = selector(new TAggregation()); var descriptor = new AggregationDescriptor <T>(); setter(descriptor, innerDescriptor); var bucket = innerDescriptor as IBucketAggregationDescriptor <T>; if (bucket != null && bucket.NestedAggregations.HasAny()) { descriptor._NestedAggregations = bucket.NestedAggregations; } this._Aggregations[key] = descriptor; return(this); }