C# 如何继承DataRow类,以便继承的DataTable可以具有DataTable.NewRow()

C# 如何继承DataRow类,以便继承的DataTable可以具有DataTable.NewRow(),c#,inheritance,datatable,datarow,C#,Inheritance,Datatable,Datarow,因此,我想通过向类中添加int来扩展DataRow类,显然这很简单 public class DataRowWithInt : DataRow { // Properties /////////////////////////////////////////////////// public int integer { get; set; } // Constructor ////////////////////////

因此,我想通过向类中添加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类不会返回我DataRowInner。
我想创建一个继承的DATABATE类,但是我不知道在NeWROW类

< p>上写什么。如果不能简单地使用一个DATABATE,在注释中使用每一个“提姆”建议中的一个数据类型“代码> int ”,然后考虑创建一个类型化的DATABATE。使用类型化数据表,您可以定义列名和类型以及许多其他数据表功能和行为,包括
NewRow()
的工作方式

在codeproject.com上的这篇文章中可以找到这样做的演示:

类型化DataTable的一个优点是,您不需要通过索引或列名“间接”引用列,您可以使用属性表示法引用列,VisualStudio的Intellisense可以帮助您解决这一问题。下面是一个例子:

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

为什么您认为
DataTable.NewRow
会返回类的实例?除此之外,如果列应该是
int
-列,请在
DataColumnCollection.Add
中使用适当的类型:
intDataTable.Columns.Add(“temp”,typeof(int))我知道它不会返回我的行。但是,即使使用我自己的类继承DataTable类,我也不知道DataTable.NewRow()在内部执行什么操作,因此我无法覆盖它。此外,我不想将此int添加到列中。我想让行知道这个int,但根本不希望它显示在表上。如果您的类继承自
DataRow
,但即使您继承自
DataTable
,该方法也不是虚拟的,所以您无法重写它。@publicst119很高兴提供帮助。