3

未知の数値型の変数を持つ必要があるクラスがあります。実行時に特定の列からデータ型を取得し、クラス変数をその型としてキャスト/インスタンス化し、行を反復するときにその列の現在の合計を保持する必要があります。クラス変数を として表現することを考えましdynamicたが、それは私には合いません。ジェネリックな方法も考えましたが、もっといい方法がある気がします。ジェネリック プロパティは素晴らしいものですが、その話がどのように終わるかはご存じのとおりです。

更新された、ここに私が取り組んできたコードの残りがあります:

dynamic dc = dataRow["MyColumnName"];
var tempValue = Convert.ChangeType(dataRow["MyColumnName"], Type.GetType(dc.GetType().ToString())); 
total+= (Decimal)tempValue;
4

3 に答える 3

3

これは私のために働く

if (dtRow.Table.Columns["Date"].DataType == typeof(System.DateTime))
于 2016-06-23T07:41:08.087 に答える
1

私はそれを次のように解決しました:

public int MyMethod<T>(DataTable myDataTable)
{
    dynamic myTempVariable = default(T);
    ...
}

これは完全な解決策ではありません (メソッドを呼び出す前に列のデータ型を知る必要はありませんでした) が、これにより、メソッド内で必要な柔軟性が得られます。

于 2012-11-01T14:53:41.997 に答える