zoukankan      html  css  js  c++  java
  • 继承LIst 的类JSON序列化,无法序列化属性的问题

    /// <summary>
        /// Paged list
        /// </summary>
        /// <typeparam name="T">T</typeparam>
        [JsonObject(MemberSerialization = MemberSerialization.OptIn)] 
        public class PagedList<T> : List<T>, IPagedList<T> 
        {
            /// <summary>
            /// Ctor
            /// </summary>
            /// <param name="source">source</param>
            /// <param name="pageIndex">Page index</param>
            /// <param name="pageSize">Page size</param>
            /// <param name="getOnlyTotalCount">A value in indicating whether you want to load only total number of records. Set to "true" if you don't want to load data from database</param>
            public PagedList(IQueryable<T> source, int pageIndex, int pageSize, bool getOnlyTotalCount = false)
            {
                var total = source.Count();
                this.TotalCount = total;
                this.TotalPages = total / pageSize;
    
                if (total % pageSize > 0)
                    TotalPages++;
    
                this.PageSize = pageSize;
                this.PageIndex = pageIndex;
                if (getOnlyTotalCount)
                    return;
                this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
            }
    
            /// <summary>
            /// Ctor
            /// </summary>
            /// <param name="source">source</param>
            /// <param name="pageIndex">Page index</param>
            /// <param name="pageSize">Page size</param>
            public PagedList(IList<T> source, int pageIndex, int pageSize)
            {
                TotalCount = source.Count;
                TotalPages = TotalCount / pageSize;
    
                if (TotalCount % pageSize > 0)
                    TotalPages++;
    
                this.PageSize = pageSize;
                this.PageIndex = pageIndex;
                this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
            }
    
            /// <summary>
            /// Ctor
            /// </summary>
            /// <param name="source">source</param>
            /// <param name="pageIndex">Page index</param>
            /// <param name="pageSize">Page size</param>
            /// <param name="totalCount">Total count</param>
            public PagedList(IEnumerable<T> source, int pageIndex, int pageSize, int totalCount)
            {
                TotalCount = totalCount;
                TotalPages = TotalCount / pageSize;
    
                if (TotalCount % pageSize > 0)
                    TotalPages++;
    
                this.PageSize = pageSize;
                this.PageIndex = pageIndex;
                this.AddRange(source);
            }
    
            /// <summary>
            /// Page index
            /// </summary> 
            [JsonProperty]
            public int PageIndex { get;   }
    
            /// <summary>
            /// Page size
            /// </summary> 
            [JsonProperty]
            public int PageSize { get;   }
    
            /// <summary>
            /// Total count
            /// </summary> 
            [JsonProperty]
            public int TotalCount { get;  }
    
            /// <summary>
            /// Total pages
            /// </summary> 
            [JsonProperty]
            public int TotalPages { get;  }
    
            /// <summary>
            /// Has previous page
            /// </summary>
            [JsonProperty]
            public bool HasPreviousPage
            {
                get {
                    return PageIndex > 0;
                }
                set {
    
                }
            }
    
            /// <summary>
            /// Has next page
            /// </summary>
            [JsonProperty]
            public bool HasNextPage
            {
                get
                {
                    return PageIndex + 1 < TotalPages;
                } 
            }
            [JsonProperty]
            public List<T> Items
            {
                get
                {
                    return this.ToList();
                } 
            }
        }
    

      

    留意   [JsonObject(MemberSerialization = MemberSerialization.OptIn)] 

    [JsonProperty]

  • 相关阅读:
    递归获取指定盘符下的所有文件及文件夹
    单例模式和多线程有没有关系?
    eclipse启动tomcat时设置端口
    dozer转化对象
    枚举
    dubbo
    json
    配网失败问题
    esp_err_t esp_event_loop_init(system_event_cb_t cb, void *ctx);
    base64编码
  • 原文地址:https://www.cnblogs.com/evemen/p/10275354.html
Copyright © 2011-2022 走看看