我有一个Web api控制器,我使用了HttpClient PostAsJsonAsync()方法;我的对象(Employee)是从基类(Person)继承的,但是在将对象发布到Api之后,对象类型被更改(正确地反序列化); 这是我的课程: - 发送前,对象类型为员工 发送后,对象类型为Person 请参阅附件
public class Person
{
public Guid Id { get; set; }
public String Name { get; set; }
}
public class Employee : Person
{
public int Age { get; set; }
}
public class CreateEmployeeRequest
{
public Person Person { get; set; }
}
答案 0 :(得分:1)
发送前,对象类型为发送后的员工,对象类型为人。
那么,序列化工作正常。您的CreateEmployeeRequest
对象包含Person
对象,而不是员工。这就是你在另一端看到它的原因。
如果您希望能够反序列化派生,那么您必须在JSON中传递$type
标志,以使用TypeNameHandling
指定应该反序列化的派生类型。 JsonSerializerSettings
的属性:
string jsonTypeNameAll = JsonConvert.SerializeObject(employeeRequest, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});