C# 复杂接口的System.Text.Json问题
我有三个类:Hotel(实现IHotel)、Room(实现IRoom,继承自IRoomDetails和IBookedRoom)、ClientModel(实现IClientModel) 如果我尝试序列化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在序列化时对多态性的支持非常有限有关。多态子类型属
列表
所有工作都很完美,以及列表
,但是如果我创建接口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": [
{},
{}
]
}