gpt4 book ai didi

c# - DTO/POCO 是否应该在所有属性上都有构造函数和私有(private) setter ?

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:01 26 4
gpt4 key购买 nike

我知道这里有很多关于 DTO 和 POCO 的讨论,但我真的找不到这方面的讨论。在没有构造函数和私有(private) setter 和构造函数的情况下编写 DTO 是否有规则?

示例 A:

public class Person
{
public int Id { get; set; }
public String Name { get; set; }
public int Age { get; set; }
}

示例 B:

public class Person
{
public Person (int id, String name, int age)
{
Id = id;
Name = name;
Age = age;
}

public int Id { get; }
public String Name { get; }
public int Age { get; }
}

这两种方法中的任何一种都被认为是反模式的吗?为什么?我的意思是,我知道有人可能会争论不可变性或锅炉板和重构问题,但是否有一种事实上的方法,官方的东西?

最佳答案

DTO 不应该是不可变的,因为主要目的是可序列化和反序列化。所以不变性并不重要。

但是

  1. 您需要将 DTO 标记为 DTO...例如添加后缀 DTO (PersonDTO)
  2. 您必须确保不在任何逻辑中使用 DTO。收到 DTO 后应转换为域对象

可变亲

  • 易于构建
  • 易于序列化

可变缺点

  • 可以被误改...

不可变亲

  • 不能误改...

不可变的缺点

  • 有时很难构建
  • 序列化器可能有问题

关于c# - DTO/POCO 是否应该在所有属性上都有构造函数和私有(private) setter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50838261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com