コード例 #1
0
        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));
            }
        }