私のプロジェクトのコードベースには、ユニットテストメソッドを作成するためのパラメータとしてDataRowを使用するレガシーメソッドがあります。手動で/プログラムでDataRowを作成するにはどうすればよいですか?
メソッドに渡すDataRowオブジェクトを手動で作成する方法はありますか。 System.Data.DataRow
クラスには、パブリックに面したコンストラクタがありません。
私のプロジェクトのコードベースには、ユニットテストメソッドを作成するためのパラメータとしてDataRowを使用するレガシーメソッドがあります。手動で/プログラムでDataRowを作成するにはどうすればよいですか?
メソッドに渡すDataRowオブジェクトを手動で作成する方法はありますか。 System.Data.DataRow
クラスには、パブリックに面したコンストラクタがありません。
DataRowは、新しいDataTableインスタンスを作成し、DataRowに必要な「キー」に対応するDataTableに列を追加し、DataTableでNewRow()
を呼び出して作成できます。たとえば: - あなたが期待Type
を含めるようにDataColumn
クラスのオーバーロードされたコンストラクタを使用することができます
DataTable usersTable = new DataTable();
usersTable.Columns.Add("FirstName");
usersTable.Columns.Add("LastName");
usersTable.Columns.Add("Email");
DataRow userRow = usersTable.NewRow();
userRow["FirstName"] = "Elmer";
userRow["LastName"] = "Example";
userRow["Email"] = "[email protected]";
あなたはユニットテストがDataTable
ためDataColumnCollection
(列)の型制約を施行するために必要な場合に注意すべきです。
var dt = new DataTable();
var dc = new DataColumn("Age", typeof(int));
dt.Columns.Add(dc);
var dr = dt.NewRow();
dr["Age"] = "test"; // throws an ArgumentException
//Input string was not in a correct format. Couldn't store<test> in Age Column. Expected type is Int32.
私はそれを知りませんでした! :-) –