Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为值对象序列化创建通用JsonConverter?_C#_.net_Domain Driven Design_System.text.json_Value Objects - Fatal编程技术网

C# 如何为值对象序列化创建通用JsonConverter?

C# 如何为值对象序列化创建通用JsonConverter?,c#,.net,domain-driven-design,system.text.json,value-objects,C#,.net,Domain Driven Design,System.text.json,Value Objects,我将域对象作为JSON存储在数据库中。要存储DDD值对象,我需要创建一个JsonConverter。我试图在System.Text.Json中创建一个通用值对象转换器 我在SO和EventFlow实现中看到了以下相关问题: -这看起来不错,但仅适用于SingleValueObject 因此,如何在System.Text.Json中创建一个通用值对象JsonConverter,而不会造成性能损失 编辑: 要添加一些上下文,这是实体: public class Meeting : Entit

我将域对象作为JSON存储在数据库中。要存储DDD值对象,我需要创建一个
JsonConverter
。我试图在
System.Text.Json
中创建一个通用值对象转换器

我在SO和
EventFlow
实现中看到了以下相关问题:

  • -这看起来不错,但仅适用于
    SingleValueObject
因此,如何在
System.Text.Json
中创建一个通用值对象
JsonConverter
,而不会造成性能损失

编辑: 要添加一些上下文,这是实体:

public class Meeting : Entity
{
    public MeetingId Id { get; private set; }
    public string Title { get; private set;}
    private MeetingTerm Term { get; private set;}
    ... // other properties
}

public class MeetingTerm : ValueObject
{
    public DateTime StartDate { get; }

    public DateTime EndDate { get; }
    ... // other properties
}

public class MeetingId : ValueObject
{
    public Guid Id { get; }
    ... // other properties
}
我想将其序列化为:

{
    "id": "unique-guid",
    "title": "foo",
    "startDate": "foo",
    "endDate": "bar"
    ... // other properties
}

“要存储DDD值对象,我需要创建一个JsonConverter”为什么?System.Text.Json API不是已经通用了吗?为什么您需要一些
JsonConverter
?为什么你有与Json.NET相关的链接?@GuruStron我用一个例子更新了这个问题,希望这有助于回答你的问题。因此,你不妨构建一个新模型,以一个
会议
实例作为输入,并提取其对象的一些属性值。或者您是否希望构建一个方法/转换器,该方法/转换器从
会议
获取所有属性值和对象,并将所有属性值(丢弃对象)作为新的单个,对象?您能否确认,对于从
ValueObject
派生的类,您要做的是将其所有可序列化属性冒泡到容器对象?如果是这样的话,那么使用
System.Text.Json
并没有简单的方法可以做到这一点……因此您基本上必须编写自己的序列化程序。如果你不想受到性能的影响,那就意味着你需要做一些事情,比如编译你自己的表达式。我并不真的推荐它,因为它需要大量的工作,但要开始,你可以看看。