![]() |
1
1
抱歉,没有足够的字符回复评论。 你应该有一个域对象,产品。它将有不可为空的名称、产品编号和价格,因为您不能有没有这些东西的产品。 评级应该为空,因为可能有一个产品没有评级。不管一个产品是否有评级,它始终是一个产品。我将保留QuantitySelled,因为我实际上不会将其存储为产品的属性,我将拥有订单和订单行集合,并根据这些集合计算售出的数量(标准化)。但是,在没有其他集合的情况下,可以将其作为字段存储在产品上。如果我要这样做,它将是一个不可为空的整数属性,默认值为零。 你只需要一个集合来过滤,这个集合可能是IEnumerable或IQueryable的实现,或者两者兼而有之,很可能你会选择实体框架之类的东西,并且实际上有一个对象集,但是我会尽量保持我的设计与我正在使用的存储方法无关,并针对这些接口工作。 然后,您可以查询单个集合,以确定域模型中产品的哪些属性为空。语法可能不完美,但没有什么智能感知不起作用,我99%的时间都是VB人。
对于你所追求的领域来说,这几乎是最干净的领域模型。 如果你的产品有特殊的衍生产品,它们要么有额外的属性,要么有不同的行为,那么继承就是。例如,我自己的系统有一个基本产品类,以及一个EbayProduct和AmazonProduct实体,它们都继承自Product,并且只包含与使用这些站点相关联的额外逻辑和属性。我的产品类有大约20个属性——大部分是可以为空的,因为当我们列出产品时,我们不一定拥有所有可用的信息。在这20个页面中,我在任何一个页面上显示的最多的是15个。我可能会做一些与您所做的类似的事情,即使用所述的确切方法筛选出尚未准备好列出的产品,即筛选缺少字段的产品集合。 |
![]() |
2
1
为什么不能
|
![]() |
3
1
你能将评级和销售量存储为属性,然后存储指示它们是否存在的布尔值吗?我认为你应该在创作的时候使用继承。 |
![]() |
4
0
你也许可以指定你在用什么?你的“页面”是从什么开始的?你的数据存储方法是什么? 听起来你把数据的显示和存储混在一起了?没有义务仅仅因为它存在而显示数据。 您的对象域几乎肯定应该只有产品。数据存储将被设置为属性可以为空,并检查是否为空以获取数据。 如果你用的是像Linq这样的东西,你可以简单地做
词典的构思、继承和编撰都显得有点枯燥。存储一个单独的布尔值告诉你一个属性是否存在是杂乱的,这将是一个维护的噩梦——只需检查它是否存在。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |