如何继承DataRow类,继承DataTable可以拥有DataTable.NewRow()

Shi*_*chi 3 c# datatable inheritance datarow

所以我想DataRow通过在类中添加int 来扩展类显然它很简单

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

    public int integer
    {
        get;
        set;
    }

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

    public DataRowWithInt(DataRowBuilder builder)
        : base(builder)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当您想要创建新行时,您必须调用

DataTable intDataTable = new DataTable();
intDataTable.Columns.Add("temp");
DataRowWithInt row = intDataTable.NewRow();
Run Code Online (Sandbox Code Playgroud)

但这会给你转换错误.我怎样才能避免这个问题,并得到DataRowWithIntintDataTable

谢谢.

- 编辑 -

我知道DataTable类不会返回DataRowWithIn.我想创建一个继承的DataTable类,但我不知道在NewRow类上写什么

Jay*_*ggs 5

如果你不能简单地在评论中使用带有@Tim int建议类型的单个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);
Run Code Online (Sandbox Code Playgroud)