3

DataRowそこでクラスにintを追加してクラスを拡張したいのですが明らかに簡単です

public class DataRowWithInt : DataRow
{
    // Properties ///////////////////////////////////////////////////

    public int integer
    {
        get;
        set;
    }

    // Constructor //////////////////////////////////////////////////

    public DataRowWithInt(DataRowBuilder builder)
        : base(builder)
    {
    }
}

新しい行を作成したいときは、呼び出す必要があります

DataTable intDataTable = new DataTable();
intDataTable.Columns.Add("temp");
DataRowWithInt row = intDataTable.NewRow();

しかし、これにより変換エラーが発生します。DataRowWithIntこの問題を回避して に到達するにはどうすればよいintDataTableですか?

ありがとうございました。

- 編集 -

DataTable クラスが DataRowWithIn を返さないことは承知しています。継承されたDataTableクラスを作成したいのですが、NewRowクラスに何を書けばよいかわかりません

4

1 に答える 1

5

intコメント内の @Tim の提案に従って、単一の DataColumn タイプの DataTable を単純に使用できない場合は、型指定された DataTable の作成を検討してください。型指定された DataTable を使用すると、列の名前と型だけでなく、他の多くの DataTable の機能と動作 (動作方法を含む) を定義できますNewRow()

これを行うデモンストレーションは、codeproject.com のこの記事にあります: 型指定され
た DataTable を手動で作成する方法

型指定された DataTable の優れた点は、インデックスまたは列名で列を「間接的に」参照する必要がないことです。Visual Studio の Intellisense を使用して、プロパティ表記を使用して列を参照できます。次に例を示します。

var intDataTable = new YourTypedDataTable();
YourTypedDataRow row = intDataTable.NewRow();
row.Temp = 100;
intDataTable.Rows.Add(row);
于 2013-08-14T21:23:28.800 に答える