【发布时间】:2021-10-07 10:40:31
【问题描述】:
我正在寻找一种方法来创建可以创建嵌套对象的构建器。
我已经读过这个话题:Builder pattern with nested objects 但这种方法是修改模型/实体,我想避免。
我有几个模型: 广告有一个Owner,Owner有一个Address,Address有一个联系实体。
public class Advertisment
{
public string AdvertismentId { get; set; }
public Owner Owner { get; set; }
}
public class Owner
{
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string Street { get; set; }
public Contact Contact { get; set; }
}
public class Contact
{
public string PhoneNo { get; set; }
}
我想链接这样的方法(或类似的方法):
var ad = new AdBuilder()
.WithId("123")
.WithOwner(x =>
x.WithName("NameOfOwner")
x.WithAddress(x => x.WithStreet("SomeStreet"))
.WithContact(y => y.WithPhoneNo("123-345-789"))));
我在这里准备了代码: https://rextester.com/TRN19779
我不想修改模型,因为它们是从 JSON Schema 生成的,我将它们保存在单独的类库中。我将使用上面的构建器将一个对象映射到另一个对象。 我正在准备一个对象发送给第 3 方消费者。
会是这么好的人并提供一点帮助吗?
【问题讨论】:
-
在我看来,有 7 个
WithXYZ方法来设置 4 个属性并将对象粘合在一起确实有点矫枉过正。拥有一个可以构建整个层次结构并设置所有值的具有 4 个参数的方法还不够吗? -
@Peter 我也不相信,但是使用 new 运算符构建一个有点复杂的对象也不能说服我
-
这只是那个对象的一部分。我正在建造的整个物体要大得多
标签: c# .net design-patterns builder builder-pattern