【发布时间】:2014-09-07 02:27:51
【问题描述】:
我有一个关于我的对象模型结构的一般性问题。也许我从错误的方向以隧道视野接近这个。我有两个类,Item 和 SerializedItem。我已经将它们定义为:
public class Item
{
public string ItemNumber { get; set; }
public string Description { get; set; }
public double Cost { get; set; }
}
public class SerializedItem : Item
{
public string SerialNumber { get; set; }
public MyObject Location { get; set; }
}
商品是商品的通用定义,包含该商品的通用信息。 SerializedItem 是特定物理项目的表示。我的困难在于,任何时候只有一个具有特定 ItemNumber 的 Item 应该存在于内存中,我不确定在允许 SerializedItem 作为其基本类型的同时执行该约束的最佳模式。
也许这是更合适的方法?我没有太多使用“New”关键字的经验,而且我过去一直避免使用它,而是支持不需要使用它的继承结构。
public class Item
{
public string ItemNumber { get; set; }
public string Description { get; set; }
public double Cost { get; set; }
}
public class SerializedItem : Item
{
private Items _item;
public SerializedItemz(Item item)
{
_item = item;
}
public new string ItemNumber
{
get { return _item.ItemNumber; }
set { _item.ItemNumber = value; }
}
public new string Description
{
get { return _item.Description; }
set { _item.Description = value; }
}
public new double Cost
{
get { return _item.Cost; }
set { _item.Cost = value; }
}
public string SerialNumber { get; set; }
}
对于如何处理此问题的任何指导,我将不胜感激。我不拘泥于任何特定的解决方案。
为了清楚起见:
Item 类是特定产品“Widget A”的表示。它包含有关 Widget A 的成本、重量、尺寸等信息。无论生产多少个 Widget A,它们都共享此信息。
SerializedItem 类表示该产品线中的实际项目“Widget A 001”。它包含有关该物品的物理位置及其生产和销售历史的信息。
如果 Item 对象已更新,则所有 SerializedItems 都应反映该更改。
【问题讨论】:
-
为什么你试图将
Item设为基类型,而它的派生类型实际上不应该从它继承任何东西? -
也许这不是正确的方法。但是派生类型应该继承Item的所有属性和方法。
-
@Servy 请查看编辑。希望这能让我对我的目标有所了解。
标签: c# .net inheritance design-patterns