gpt4 book ai didi

c# - 如何在 DDD 中使用时间?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:21 24 4
gpt4 key购买 nike

考虑这个用例。用户帐户仅在某个时间段处于事件状态。如果未激活,用户将无法登录。

我想象这个。我们有一个值对象,即帐户聚合中的帐户结束时间。域模型无法“加载”当前时间(我们进行单元测试并且不使用 DateTime.Now)。该模型被赋予当前时间。然后我们需要在域服务中实现验证,该验证将从操作系统(或单元测试)获得当前时间,并将其提供给用户帐户聚合,以便它判断帐户是否处于事件状态。

因此,任何时候我们需要实现与时间相关的逻辑时,我们都需要按照描述执行域服务。如您所见,这是好方法吗?或者有一些更简单、更好的解决方案?

最佳答案

正如评论中的其他人所建议的,使用能够返回当前时间的服务。现在可以在单元测试中替换此服务。

如果你做大量的日期/时间处理,还要考虑不同的时区,我强烈建议你使用Noda Time .

Noda Time is an alternative date and time API for .NET. It helps you to think about your data more clearly, and express operations on that data more precisely.

如上所述,Noda Time 已经包含一个返回当前时间的服务接口(interface),参见IClock。是否要在域逻辑中直接使用该接口(interface)取决于您。但在我看来,日期/时间处理是基本的库功能,所以我通常在每个项目中都依赖于 Noda Time。

关于c# - 如何在 DDD 中使用时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33415701/

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