Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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# 复杂接口的System.Text.Json问题_C#_Json_System.text.json - Fatal编程技术网

C# 复杂接口的System.Text.Json问题

C# 复杂接口的System.Text.Json问题,c#,json,system.text.json,C#,Json,System.text.json,我有三个类:Hotel(实现IHotel)、Room(实现IRoom,继承自IRoomDetails和IBookedRoom)、ClientModel(实现IClientModel) 如果我尝试序列化列表所有工作都很完美,以及列表,但是如果我创建接口IRoom,它继承了这两个接口并尝试序列化列表: 正如我们看到的,数据没有序列化。(房间列表不是空的)。有什么建议吗?使用Newtonsoft.Json解决了问题可能与System.Text.Json在序列化时对多态性的支持非常有限有关。多态子类型属

我有三个类:Hotel(实现IHotel)、Room(实现IRoom,继承自IRoomDetails和IBookedRoom)、ClientModel(实现IClientModel)

如果我尝试序列化
列表
所有工作都很完美,以及
列表
,但是如果我创建接口
IRoom
,它继承了这两个接口并尝试序列化
列表


正如我们看到的,数据没有序列化。(房间列表不是空的)。有什么建议吗?

使用Newtonsoft.Json解决了问题可能与
System.Text.Json
在序列化时对多态性的支持非常有限有关。多态子类型属性仅在属性声明为
对象时序列化。有关确认和解决方法,请参阅。在这里切换回Json.NET是完全合理的。如果您需要进一步的帮助,您是否可以将您的问题包括完整的内容?事实上,我们只有一些类证明了这个问题。我已经测试了System.Text.Json,发现它对多态性的支持非常有限,正如您之前所说的,因此方法Serialize()在这里不能正常工作。以同样的方式操作,但使用Newtonsoft.Json序列化程序从第一次就解决了这个问题。我想这是名称空间问题之一,而不是我的问题。
public interface IRoomDetails
    {
        string Number { get; set; }
        float PricePerDay { get; set; }
    }

public interface IBookedRoom
    {
        bool IsAvailable { get; set; }
        IClientModel Reservator { get; set; }
        string TermFrom { get; set; }
        string TermTo { get; set; }
        string Term { get; }
    }
public interface IRoom : IRoomDetails , IBookedRoom
    {

    }
public class Room : ObservableObject, IRoom
    {
       //Realization here
    }
 {
    "Adress": "Pokrovska , 1B",
    "Name": "Victoria",
    "TotalRooms": 2,
    "AvailableRooms": 2,
    "Rooms": [
      {},
      {}
    ]
  }