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

时间:2013-08-14 20:41:45

标签: c# inheritance datatable datarow

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

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类上写什么

1 个答案:

答案 0 :(得分:5)

如果您不能在评论中根据@Tim的建议简单地使用具有int类型的单个DataColumn的DataTable,那么请考虑创建一个类型化的DataTable。使用类型化的DataTable,您可以定义列名称和类型以及许多其他DataTable功能和行为,包括NewRow()的工作方式。

可以在codeproject.com上的文章中找到这样做的演示:
How to Manually Create a Typed DataTable

关于类型化DataTable的一个好处是您不需要通过索引或列名“间接”引用列,您可以使用Visual Studio的Intellisense帮助您使用属性表示法引用列。这是一个例子:

var intDataTable = new YourTypedDataTable();
YourTypedDataRow row = intDataTable.NewRow();
row.Temp = 100;
intDataTable.Rows.Add(row);