2012-04-14 3 views
0

状況...あるオブジェクトのプロパティを同じベースの別のオブジェクトにコピーする

私はasp.netサイト用のショッピングカートを作成しています。 CartItemオブジェクトのリストを含むCartオブジェクトがあります。むしろ、このようなID、商品名、説明、価格など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; 
    } 
} 
} 

今...単に、このようなデータセットのテーブルからのDataRowを継承する賢いだろうと思いました私が望む行を含むDanubeDataSet.ProductsTableオブジェクトを取得した場合、ベースオブジェクトのすべてのプロパティを設定するにはどうすればよいですか?これは機能していません...

これは、タイプDanubeDataSet.ProductsRowItemへのキャストはできません。私はそれがなぜなのか理解していますが、ProductsRowのすべてのプロパティが含まれているため、ProductsRowのデータをCartItemに移動する方法が必要になります。私が間違っている?

解決策がある場合は、自動的に生成されるため、DanubeDataSet.ProductsRowのコードを変更したくないことに注意してください。ありがとうございました。

答えて

0

継承を使って行うことはできません。ただし、部分クラスを使用してこれを行う便利な方法があります。ここでは、データセットを開き、デザインサーフェスを右クリックし、コンテキストメニューから[コードを表示]を選択します。これにより、データセット用のコードビハインドファイルが作成されます。次に、プロパティを次のように追加します。

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

ありがとうございました。私はあなたの考えが好きですが、私はあなたの指示に従うことができません。データセットを開くためにDanubeDataSet.xsdをダブルクリックすると、コンテキストメニューを表示するために右クリックするとView Codeがオプションになりません。テーブルアダプター、データテーブル、クエリなどを追加できるように拡張する「追加」のみがあります。また、「データのプレビュー」、プロパティ。提案? – Theo

+0

私は手作業でコードビハインドファイルを追加しました。ありがとうございました。 – Theo

+0

View Codeオプションが利用できなかった理由がわかりません。Visual Studioのバージョンがこれをサポートしていない可能性があります.C#言語でもサポートされています。私は少し手作業でこれを解決してうれしいです。 –

関連する問題