public virtual async Task <IActionResult> getEntitys() { ApiResult customResult = new ApiResult(); try { var httpContext = _httpContextAccessor.HttpContext; var userToken = httpContext.getUserToken(); var jsonStr = await _cache.GetStringAsync("EntityBaseChildTypePropertyInfos" + userToken?.userid); if (string.IsNullOrEmpty(jsonStr)) { var childTypePropertyInfos = ClassHelper.GetChildTypePropertyInfos(typeof(EntityBase)); var result = childTypePropertyInfos.Select(x => new EntityInfo() { Name = x.Key.Name , PropertyInfos = x.Value?.Select(p => new EntitypPropertyInfo() { Name = p.Name , TypeName = p.PropertyType.HasImplementedRawGeneric(typeof(Nullable <>))? p.PropertyType.GetGenericArguments()[0].Name: p.PropertyType.Name }) }); customResult.resultBody = result; await _cache.SetAsync("EntityBaseChildTypePropertyInfos" + userToken?.userid, DataHelper.StringToBytes(JsonConvert.SerializeObject(result)), _httpOptions.GetDistributedCacheEntryOptions()); } else { customResult.resultBody = JsonConvert.DeserializeObject <IEnumerable <EntityInfo> >(jsonStr); } customResult.resultCode = 0; return(Ok(customResult)); } catch (Exception ex) { customResult.resultCode = ResultCodeEnum.Exception; customResult.resultBody = ex.ToString(); return(BadRequest(customResult)); } }