gpt4 book ai didi

c# - 将值对象传递给实体方法

转载 作者:行者123 更新时间:2023-12-02 03:57:28 25 4
gpt4 key购买 nike

将值对象传递给实体方法(就 DDD 而言)是一种好的做法吗?例如,我的实体 Customer 中有一个方法:

SetAddress(Address invoiceAddress); 

有效吗?或者我应该将地址参数传递为

SetAddress(string street, string town, string zip, string country);

并让客户处理地址对象的创建,如果需要则抛出异常。

地址是不可变的对象。

最佳答案

您绝对应该传递一个 Address 对象。它对于 DDD 而言是有效的,并且也有利于可扩展性(即您可以向 Address 对象添加更多字段,而无需更改 SetAddress 方法的签名)。

此外,Address 对象应包含地址信息的验证逻辑,Customer.SetAddress(...) 方法可以在设置地址之前执行该验证逻辑:

public class Customer
{
public SetAddress(Address invoiceAddress)
{
// ToDo: Execute validation logic encapsulated in 'Address' object
// ToDo: Execute additional validation logic here
}
}

关于c# - 将值对象传递给实体方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9427962/

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