Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在子类实现IList时序列化基类属性<;T>;通过使用Newtonsoft.json?_C#_List_Serialization_Json.net - Fatal编程技术网

C# 如何在子类实现IList时序列化基类属性<;T>;通过使用Newtonsoft.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

我有一个继承基类并实现IList的类。我正在序列化这个类的对象。但是在json字符串中,我没有得到基类的属性

我的班级看起来像

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
。事实上,你的问题似乎是这两个问题的重复,同意吗?