0

状況...

asp.net サイトのショッピング カートを作成しています。CartItem オブジェクトのリストを含む Cart オブジェクトがあります。ID、ProductName、Description、Price などの CartItem オブジェクトに必要なプロパティを作成するのではなく、このようにデータセット テーブルからデータ行を単純に継承する方が賢明だと思いました...

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 のすべてのプロパティが含まれているため、ProductsRow のデータを CartItem に移動する方法が必要です。私が間違っている?

解決策がある場合は、自動生成されるため、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 に答える