gpt4 book ai didi

c# - DDD 封装和存储库模式

转载 作者:行者123 更新时间:2023-11-30 13:48:41 24 4
gpt4 key购买 nike

假设我有这个简单的类

public class MyEntity
{
public DateTime DateUpdated { get; private set; }
public string Author { get; private set; }
public string Comment { get; private set; }

public void AddComment(string comment, string author)
{
Author = author;
Comment = comment;
DateUpdated = DateTime.Now;
}
}

我已将 setter 设为私有(private)以封装该类,并添加了 AddComment 方法以向我的类添加一些行为。这在创建新对象时工作得很好但是当我想从数据库加载实体时 DateUpdated 当然设置为我想避免的当前日期。

是否有任何模式可以用来避免将 DateUpdated setter 公开,因为这似乎破坏了我很好的封装并弄乱了类的干净接口(interface)?该类当然只是更一般问题的一个示例。

在不创建更多公共(public)构造函数的情况下,我现在最接近的是创建一个我通过公共(public)静态方法访问的私有(private)构造函数。

最佳答案

使用接受与对象字段匹配的参数的构造函数。

这将允许您在启动时填充对象并保持它们不可变。

public MyEntity(DateTime dateUpdated, string author, string comment)
{
DateUpdated = dateUpdated;
Author = author;
Comment = comment;
}

关于c# - DDD 封装和存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796343/

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