DDD ValueObject和Enumeration ,有没有什么好的方法来实现序列化?

在DDD中。价值对象枚举 是非常漂亮的,所以我想在日常的程序逻辑中使用这两个对象,而不仅仅是领域逻辑。当使用自定义的值对象和枚举时,序列化的问题就来了:我是否应该将所有的值对象和枚举都用 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 转换器不好用,谁能指出有什么简单的抽象方法?

解决方案:

你可以达到你想要的效果。你需要切换到NewtonsoftJson序列化。

在Startup.cs的ConfigureServices方法中调用。

services.AddControllers().AddNewtonsoftJson();

在这之后,你的构造函数会被带有私有setter的类的反序列化调用。

不需要自定义转换器。

作为参考,我使用的是ASP Net Core 3.1。

给TA打赏
共{{data.count}}人
人已打赏
未分类

在一列中选择进入和退出

2022-9-8 17:58:19

未分类

在Azure虚拟机上访问Azure DevOps repo连接,而无需互联网。

2022-9-8 17:58:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索