0

情况...

我正在为一个 asp.net 网站创建一个购物车。我有一个 Cart 对象,它将包含 CartItem 对象的列表。而不是为 CartItem 对象创建必要的属性,例如 ID、产品名称、描述、价格……我认为像这样简单地从数据集表中继承数据行会很聪明……

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 中的代码,因为它是自动生成的。谢谢你。

4

1 回答 1

0

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

public partial class DanubeDataSet 
{
    partial class ProductsRow
    {
        public decimal TotalCost
        {
            get
            {
                return Quantity * Price;
            }
        }
    }
}
于 2012-04-14T04:00:04.653 回答