public SearchResponse <TContent> GenericSearch <TContent>(ISearchRequest request) where TContent : IContent { var cacheKey = request.GetCacheKey(); var result = ExecuteAndCache( GetType().Name + "." + MethodBase.GetCurrentMethod().Name + ":" + cacheKey, () => { var searchResult = _circruiBreaker.Execute <SearchResponse <TContent> >( () => _searchServices(ServiceEnum.Find).GenericSearch(request) as SearchResponse <TContent>, () => _searchServices(ServiceEnum.Cache).GenericSearch(request) as SearchResponse <TContent> ); return(searchResult); }, EmptySearchResultsFactory.CreateSearchResponse <TContent>(), TimeSpan.FromMilliseconds(SiteSettings.Instance.ExecuteAndCacheTimeOutMilliseconds), "search"); return(result); }