【发布时间】:2021-07-17 05:39:27
【问题描述】:
我有一个请求类,它具有三个属性,其中两个将从 json 请求正文反序列化,最后一个将在反序列化后基于其他两个属性创建。我正在使用OnDeserialized() 注释来实现这一点。但是,OnDeserialized 注释似乎根本没有效果。以下是我的代码。请指教!
public class BindUserRequest : IRequest<BindUserResponseDto>
{
[JsonIgnore]
public PartitionKeyType Id { get; set; }
[Required]
public string DeviceType { get; set; }
[Required]
public string DeviceId { get; set; }
[OnSerializing()]
void OnSerializingMethod(StreamingContext context)
{
DeviceType = Id.DeviceType;
DeviceId = Id.DeviceId;
}
[OnDeserialized()]
void OnDeserializedMethod(StreamingContext context)
{
Id = new PartitionKeyType { DeviceId = "123", DeviceType = "123" };
System.Console.WriteLine("****OnDeserialized get called");
}
}
【问题讨论】:
-
我猜你可能习惯于使用 JSON.NET,但现在你使用的是 System.Text.Json(在这里添加适当的标签会很有帮助)。无论如何,拖车之间存在一些差异。 This migration documentation 涵盖了您提到的事件。
-
是的,我正在使用 System.Text.Json。感谢您的洞察力!
-
OnSerializing 属于 System.Runtime.Serialization 命名空间,它是二进制序列化,这不适用于 System.Text.Json
-
另请注意,ASP.NET 似乎与这个问题没有任何关系,我不确定 ASP.NET5 是什么。有 .NET 5,它与 .NET Core 不同。有 ASP.NET Core,它不同于 .NET Core 和 .NET 5。但是没有什么叫 ASP.NET 5,实际上标签信息说“不要再使用这个标签了”...
标签: c# asp.net-core .net-core system.text.json