将一个对象的属性复制到具有相同基础的另一个对象

时间:2012-04-14 03:43:38

标签: c# inheritance dataset

情况......

我正在为asp.net网站创建购物车。我有一个Cart对象,它将包含一个CartItem对象列表。而不是为CartItem对象创建必要的属性,例如ID,ProductName,Description,Price ......我认为从数据集表继承数据流是很聪明的......

public class CartItem : DanubeDataSet.ProductsRow
{
public int Quantity { get; set; }

public CartItem(System.Data.DataRowBuilder rb) : base(rb)
{
    Quantity = 1;
}

public decimal TotalCost
{
    get
    {
        return Quantity * Price;
    }
}
}

现在,如果我获取包含我想要的行的DanubeDataSet.ProductsTable对象,如何在基础对象中设置所有属性?这不起作用......

DanubeDataSet.ProductsDataTable productTable = new DanubeDataSetTableAdapters.ProductsTableAdapter().GetProductByID(itemId);
    CartItem newItem = (CartItem)productTable[0];
    items.Add(newItem);

它无法从类型DanubeDataSet.ProductsRow转换为CartItem。我理解为什么会这样,但是必须有一种方法将ProductsRow的数据移动到CartItem,因为它包含ProductsRow的所有属性。我错了吗?

如果您有解决方案,请记住我不想更改DanubeDataSet.ProductsRow中的代码,因为它是自动生成的。谢谢。

1 个答案:

答案 0 :(得分:0)

你无法做你正在尝试继承的事情。但是,使用分部类有一种方便的方法。以下是您的操作:打开数据集,右键单击设计图面,然后从上下文菜单中选择“查看代码”。这将为数据集创建代码隐藏文件。然后按如下方式添加您的属性:

public partial class DanubeDataSet 
{
    partial class ProductsRow
    {
        public decimal TotalCost
        {
            get
            {
                return Quantity * Price;
            }
        }
    }
}