继承LIst 的类JSON序列化,无法序列化属性的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/// <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]

posted @   evemen  阅读(1148)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示