如何手动/以编程方式创建 DataRow?

How can I manually / programmatically create a DataRow?

我的项目的代码库有一个遗留方法,它将 DataRow 作为参数,我想为其创建一个单元测试方法。

如何手动创建 DataRow 对象以传递给该方法? System.Data.DataRow class 没有面向 public 的构造函数。

DataRow 可以通过创建一个新的DataTable 实例,在DataTable 中添加DataRow 需要的“键”对应的列,然后在DataTable 上调用NewRow() 来创建。例如:

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"] = "elmer@example.com";
usersTable.Rows.Add(userRow);

您应该注意,如果单元测试需要对 DataTableDataColumnCollection(列)强制执行类型约束 - 您可以使用 DataColumn class 以包括预期的 Type.

        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.

        //should it succeed
        dt.Rows.Add(dr);