C# 如何在子类实现IList时序列化基类属性<;T>;通过使用Newtonsoft.json?
我有一个继承基类并实现IList的类。我正在序列化这个类的对象。但是在json字符串中,我没有得到基类的属性 我的班级看起来像C# 如何在子类实现IList时序列化基类属性<;T>;通过使用Newtonsoft.json?,c#,list,serialization,json.net,C#,List,Serialization,Json.net,我有一个继承基类并实现IList的类。我正在序列化这个类的对象。但是在json字符串中,我没有得到基类的属性 我的班级看起来像 public class MyCustomList<T> : Paging, IList<T> { private IList<T> _internalList = new List<T>(); public int Count => _internalList.Count; public b
public class MyCustomList<T> : Paging, IList<T>
{
private IList<T> _internalList = new List<T>();
public int Count => _internalList.Count;
public bool IsReadOnly => _internalList.IsReadOnly;
public IEnumerator<T> GetEnumerator()
{
return _internalList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _internalList.GetEnumerator();
}
public void Add(T item)
{
_internalList.Add(item);
}
public void AddRange(MyCustomList<T> items)
{
foreach (T item in items)
{
_internalList.Add(item);
}
}
public void Clear()
{
_internalList.Clear();
}
public bool Contains(T item)
{
return _internalList.Contains(item);
}
public void CopyTo(T[] array, int arrayIndex)
{
_internalList.CopyTo(array, arrayIndex);
}
public bool Remove(T item)
{
return _internalList.Remove(item);
}
public int IndexOf(T item)
{
return _internalList.IndexOf(item);
}
public void Insert(int index, T item)
{
_internalList.Insert(index, item);
}
public void RemoveAt(int index)
{
_internalList.RemoveAt(index);
}
public T this[int index]
{
get => _internalList[index];
set => _internalList[index] = value;
}
}
static void Main(string[] args)
{
MyCustomList<string> myList = new MyCustomList<string>();
myList.Add("Sample Text 1");
myList.Add("Sample Text 2");
myList.Add("Sample Text 3");
myList.firstPage = 1;
myList.nextPage = 2;
myList.previousPage = 0;
myList.lastPage = 16;
string jsonStr = JsonConvert.SerializeObject(myList, Formatting.None);
Console.WriteLine(jsonStr);
Console.ReadKey();
}
公共类MyCustomList:分页,IList
{
私有IList_internalList=新列表();
public int Count=>\u internalList.Count;
public bool IsReadOnly=>\u internalList.IsReadOnly;
公共IEnumerator GetEnumerator()
{
返回_internalList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
返回_internalList.GetEnumerator();
}
公共作废新增(T项)
{
_内部列表。添加(项目);
}
公共void AddRange(MyCustomList项)
{
foreach(项目中的T项目)
{
_内部列表。添加(项目);
}
}
公共空间清除()
{
_internalList.Clear();
}
公共布尔包含(T项)
{
返回_internalList.Contains(项目);
}
public void CopyTo(T[]数组,int arrayIndex)
{
_CopyTo(数组,arrayIndex);
}
公共布尔删除(T项)
{
返回_internalList.Remove(项目);
}
公共整数索引(T项)
{
返回_internalList.IndexOf(项目);
}
公共空白插入(整数索引,T项)
{
_内部列表。插入(索引,项目);
}
公共无效删除(整数索引)
{
_internalList.RemoveAt(索引);
}
公共T此[int索引]
{
get=>_internalList[index];
set=>\u internalList[index]=值;
}
}
我的主要功能看起来像
public class MyCustomList<T> : Paging, IList<T>
{
private IList<T> _internalList = new List<T>();
public int Count => _internalList.Count;
public bool IsReadOnly => _internalList.IsReadOnly;
public IEnumerator<T> GetEnumerator()
{
return _internalList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _internalList.GetEnumerator();
}
public void Add(T item)
{
_internalList.Add(item);
}
public void AddRange(MyCustomList<T> items)
{
foreach (T item in items)
{
_internalList.Add(item);
}
}
public void Clear()
{
_internalList.Clear();
}
public bool Contains(T item)
{
return _internalList.Contains(item);
}
public void CopyTo(T[] array, int arrayIndex)
{
_internalList.CopyTo(array, arrayIndex);
}
public bool Remove(T item)
{
return _internalList.Remove(item);
}
public int IndexOf(T item)
{
return _internalList.IndexOf(item);
}
public void Insert(int index, T item)
{
_internalList.Insert(index, item);
}
public void RemoveAt(int index)
{
_internalList.RemoveAt(index);
}
public T this[int index]
{
get => _internalList[index];
set => _internalList[index] = value;
}
}
static void Main(string[] args)
{
MyCustomList<string> myList = new MyCustomList<string>();
myList.Add("Sample Text 1");
myList.Add("Sample Text 2");
myList.Add("Sample Text 3");
myList.firstPage = 1;
myList.nextPage = 2;
myList.previousPage = 0;
myList.lastPage = 16;
string jsonStr = JsonConvert.SerializeObject(myList, Formatting.None);
Console.WriteLine(jsonStr);
Console.ReadKey();
}
static void Main(字符串[]args)
{
MyCustomList myList=新建MyCustomList();
添加(“示例文本1”);
添加(“示例文本2”);
添加(“示例文本3”);
myList.firstPage=1;
myList.nextPage=2;
myList.previousPage=0;
myList.lastPage=16;
字符串jsonStr=JsonConvert.SerializeObject(myList,Formatting.None);
Console.WriteLine(jsonStr);
Console.ReadKey();
}
我的输出看起来像
public class MyCustomList<T> : Paging, IList<T>
{
private IList<T> _internalList = new List<T>();
public int Count => _internalList.Count;
public bool IsReadOnly => _internalList.IsReadOnly;
public IEnumerator<T> GetEnumerator()
{
return _internalList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _internalList.GetEnumerator();
}
public void Add(T item)
{
_internalList.Add(item);
}
public void AddRange(MyCustomList<T> items)
{
foreach (T item in items)
{
_internalList.Add(item);
}
}
public void Clear()
{
_internalList.Clear();
}
public bool Contains(T item)
{
return _internalList.Contains(item);
}
public void CopyTo(T[] array, int arrayIndex)
{
_internalList.CopyTo(array, arrayIndex);
}
public bool Remove(T item)
{
return _internalList.Remove(item);
}
public int IndexOf(T item)
{
return _internalList.IndexOf(item);
}
public void Insert(int index, T item)
{
_internalList.Insert(index, item);
}
public void RemoveAt(int index)
{
_internalList.RemoveAt(index);
}
public T this[int index]
{
get => _internalList[index];
set => _internalList[index] = value;
}
}
static void Main(string[] args)
{
MyCustomList<string> myList = new MyCustomList<string>();
myList.Add("Sample Text 1");
myList.Add("Sample Text 2");
myList.Add("Sample Text 3");
myList.firstPage = 1;
myList.nextPage = 2;
myList.previousPage = 0;
myList.lastPage = 16;
string jsonStr = JsonConvert.SerializeObject(myList, Formatting.None);
Console.WriteLine(jsonStr);
Console.ReadKey();
}
[“样本文本1”、“样本文本2”、“样本文本3”]
但在输出基本属性中,如firstPage、nextPage等。。。不可见
如何序列化这些基本属性?应用
[JsonObject]
并使用中所示的专用可序列化代理项集合属性,或使用中所示的JsonConverter
。事实上,你的问题似乎是这两个问题的重复,同意吗?