DDD ValueObject和Enumeration,是否有任何好的方法来实现序列化?

在DDD中,Value ObjectEnumeration非常漂亮,因此我想在日常程序逻辑中同时使用两者,而不仅仅是域逻辑。当使用自定义的值对象和枚举时,序列化问题来了:我应该使用System.Text.Json.JsonConverter<T>实现所有的值对象和枚举,还是有什么好的方法来处理序列化和反序列化?

更新:
为了清楚起见,Eumeration演示如下(ValueObject派生类相同。):

[JsonConverter(typeof(CustomizedConverter))]
public class CustomizedEnumeration1 : Enumeration 
{
     public string Customized { get; protected set; }

     public ... // some other customized property or class

     public CustomizedEnumeration(int id,string name,string customized) : base(id,string) {
        Customized = customized;
     } 
}

public class Customized2 : Enumeration 
{ ... }

public class OtherCustomized: Enumeration 
{ ... }

在DDD中,属性有时用protected/private setter密封,反序列化无权设置该值。许多派生类无法按预期进行反序列化,因此我们必须用System.Text.Json.JsonConverter<T>一对一地重写序列化。重写每个派生的Enumeration / Valueobject转换器是不好的,任何人都可以为此指出任何简单的抽象吗?

wdwxhn 回答:DDD ValueObject和Enumeration,是否有任何好的方法来实现序列化?

您可以实现所需的结果。您需要切换到NewtonsoftJson序列化。

在Startup.cs中使用ConfigureServices方法调用此函数:

UserID  Txn_id  TaskID  In/Out
1       1       COD     2020-04-24 08:00:00.00 - 2020-04-24 10:00:00.00
1       2       COD     2020-04-24 10:30:00.00 - 2020-04-24 11:30:00.00

此后,反序列化将对具有私有setter的类调用构造函数。

不需要自定义转换器。

作为参考,我正在使用ASP Net Core 3.1

本文链接:https://www.f2er.com/2422248.html

大家都在问