小编Daw*_*zem的帖子

DDD值对象相等,== vs .Equals()

所以我有一个价值object,(任意说钱),我想为它实现平等.我知道==.Equals()(参考和数据相等)的预期/默认行为.

在这种情况下,我希望能够比较两个对象,并说它们相当于计算(例如1m和3ft是等效的)但是对于持久性(使用NHibernate,isDirty我认为取决于相等),用户显示和选择货币,我希望它们被认为是不同的.

在这种情况下,我应该

  1. 有不同的行为==.Equals()(以及应该做什么),
  2. 无论我想在哪里检查等效性,只需检查每个属性(意味着额外的代码)
  3. 实现一种方法.IsEquivalent()(我不想做后者)
  4. 我缺少的其他东西

我应该遵循最佳实践/模式吗?谢谢

编辑:我得到了一些关于改变汇率的回应.所以要更新清晰度.让我们说高度,而不是货币

  • 我想澄清一些假设:
  • // ignore:值对象包含十进制数量,字符串/类货币
  • // ignore:汇率不会改变.
  • // ignore:类货币知道它与另一个货币的汇率
  • value对象包含十进制数,字符串/类单元
  • 类单位知道它与另一个的转换
  • 我不打算扩大费率/转换率等

与实施货币相比,我更关注实践和模式.基本上,相同的方法是一个人的身高,其中身高是一个价值对象,({1,m}到{3,ft},其中1m总是"等于"/"相当于"3ft)

c# nhibernate domain-driven-design equality value-objects

1
推荐指数
1
解决办法
767
查看次数