public SearchCriteria MapProperties <F, T>() { _parameters.ForEach(p => { p.Name = PropertyMapper.GetPropertyName <F, T>(p.Name); }); _sortedFields.ForEach(s => { s.FieldName = PropertyMapper.GetPropertyName <F, T>(s.FieldName); }); _aggregateFields.ForEach(p => { p.Field = PropertyMapper.GetPropertyName <F, T>(p.Field); }); //IEnumerable<string> sumFields = this._summaryFields.Select((field) => PropertyMapper.GetPropertyName<F, T>(field)).ToList(); //_summaryFields.Clear(); //_summaryFields.AddRange(sumFields); // Validate that mapped properties are valid var validProperties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance).Select(p => p.Name).ToList(); validProperties.AddRange(PropertyMapper.GetReferenceOnlyProperties <F, T>()); ValidateSearchCriteria(validProperties, validProperties); return(this); }