Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 混合值对象/实体类型?_C#_Design Patterns_Domain Driven Design_Party - Fatal编程技术网

C# 混合值对象/实体类型?

C# 混合值对象/实体类型?,c#,design-patterns,domain-driven-design,party,C#,Design Patterns,Domain Driven Design,Party,是的,我同意这个标题表明我目前的思维方式有缺陷。但为了再次恢复理智,以下是我如何进入这种令人遗憾的状态的 subject对象是一个地址,subject应用程序在三个地区办事处拥有数百名员工。在这种情况下,将(3)个地址视为实体对象并在数据库中仅保留这三个地址是很有用的 当然,员工们有工作,因为应用程序服务于成千上万的客户。在这种情况下,将地址视为ValueObject更为有用 现在我想要一个派对模式来保持公司和人们的共同特征,比如…地址 最后一个factoid—我们有一个ValueObject类

是的,我同意这个标题表明我目前的思维方式有缺陷。但为了再次恢复理智,以下是我如何进入这种令人遗憾的状态的

subject对象是一个地址,subject应用程序在三个地区办事处拥有数百名员工。在这种情况下,将(3)个地址视为实体对象并在数据库中仅保留这三个地址是很有用的

当然,员工们有工作,因为应用程序服务于成千上万的客户。在这种情况下,将地址视为ValueObject更为有用

现在我想要一个派对模式来保持公司和人们的共同特征,比如…地址

最后一个factoid—我们有一个ValueObject类,它可以完成您可能期望值对象完成的事情(即,基于公共属性确定相等性)和一个实体类(如果对象是持久的,则基于某个id确定相等性)

那么,该怎么办?在我想我会问这个问题,看看会得到什么样的答案之前,我一直在玩下面的课堂想法

class Address : ValueObject, IHaveAddress{
    Line 1 {get;}
    ... etc
    Address {get{return this;}} // this has an awkward smell
}

class EntityAddress : Entity<int>, IHaveAddress{
    Address {get;}
}

interface IHaveAddress {
    Address {get;}
}

class Party : Entity<int> {
    IList<IHaveAddress> _address;
}
类地址:ValueObject,IHaveAddress{
第1行{get;}
等
地址{get{returnthis;}}///这有一股难闻的气味
}
类EntityAddress:实体,IHaveAddress{
地址{get;}
}
接口地址{
地址{get;}
}
类别当事人:实体{
IList_地址;
}
这样的想法有什么好处吗

干杯,
贝里尔

答复 是的,我的思维有缺陷:-)
我正在寻找的对象是一个实体,在下面模型的上下文中

感谢IAbstract和

这有帮助吗:?我想我找到了新的玩法

更新我不确定这是多少答案
…我认为,使用标准的“复合”术语而不是“聚会”更容易理解。实际上,您有一个公司(根),一组地址(或分支机构),许多人(或叶)在其中工作

我还不确定ValueObject到底有多少价值。从表面上看,超类型在比较地址对象时可能很有用。不过,这似乎有点倒退的感觉。这就是说,在您的示例中,存储1个Address对象并将Person作为复合对象添加到分支地址显然更有意义


正如我前面所说的,我有一个个人项目,在这个项目中,我将把ValueObject与一些复合对象一起工作,以发现它的有用性。您对
实体的引用是否与实体框架的任何实现相关?或者,
Entity
只是想引用一个记录ID号吗?

刚刚发现了一些有趣的东西:是的,这或多或少就是我在问题中提到的ValueObject基类,我已经有了。它很有用,因为它显示了为什么需要这样一个基类。Cheers@Berryl:哪里有关于“政党模式”的信息?我第一次听说它,这里还有另一个我找到这些链接的地方:似乎“政党”模式实际上是一个“复合”。。。有道理。正如我上面提到的,我可能会在一个我正在进行的个人项目中使用它。