Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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# 将序列化元数据与数据约定的实现分离?_C#_Json_Asp.net Web Api_Serialization_Asp.net Core - Fatal编程技术网

C# 将序列化元数据与数据约定的实现分离?

C# 将序列化元数据与数据约定的实现分离?,c#,json,asp.net-web-api,serialization,asp.net-core,C#,Json,Asp.net Web Api,Serialization,Asp.net Core,我想为DTO定义一个契约,消费API项目将实现该契约并将其作为JSON返回 在我看来,这里有三个问题: 合同规定的财产 实现(例如,这可能是一个实体框架POCO) 定义返回的JSON的序列化元数据 我想分别定义这三个部分,但就我所知,我必须在合同的执行中添加序列化修饰(DataMemberattributes等)。这意味着实现与JSON表示相耦合 是否可以将此序列化元数据分离到单独的类中?我总是发现为每个目的创建单独的模型是有益的,然后使用AutoMapper在这些模型之间进行映射 您也可以创建

我想为DTO定义一个契约,消费API项目将实现该契约并将其作为JSON返回

在我看来,这里有三个问题:

  • 合同规定的财产
  • 实现(例如,这可能是一个实体框架POCO)
  • 定义返回的JSON的序列化元数据
  • 我想分别定义这三个部分,但就我所知,我必须在合同的执行中添加序列化修饰(
    DataMember
    attributes等)。这意味着实现与JSON表示相耦合


    是否可以将此序列化元数据分离到单独的类中?

    我总是发现为每个目的创建单独的模型是有益的,然后使用AutoMapper在这些模型之间进行映射


    您也可以创建约定,但这有时感觉很神奇。

    我总是发现为每个目的创建单独的模型是有益的,然后使用AutoMapper在这些模型之间进行映射


    您也可以创建约定,但这有时会让人觉得很神奇。

    如果您使用的是完整的.Net(而不是.Net core)并使用Json.Net进行序列化,则可以使用。但是,请参阅以了解实现中的一些限制。谢谢@dbc。我想这正是我想要的。实际上我使用的是.NETCore,但是我看到
    MetadataTypeAttribute
    已经迁移并重命名了-。稍后我将尝试并报告。遗憾的是,Json.NET不支持
    modelmatatype
    。看和。是的,我已经证实你说的是正确的。似乎唯一的选择是使用AutoMapper,如下所示。尽管@dbc,感谢您的见解。如果您使用的是完整的.Net(而不是.Net核心)并使用Json.Net进行序列化,您可以使用。但是,请参阅以了解实现中的一些限制。谢谢@dbc。我想这正是我想要的。实际上我使用的是.NETCore,但是我看到
    MetadataTypeAttribute
    已经迁移并重命名了-。稍后我将尝试并报告。遗憾的是,Json.NET不支持
    modelmatatype
    。看和。是的,我已经证实你说的是正确的。似乎唯一的选择是使用AutoMapper,如下所示。感谢您对@dbc的见解。