C# 如何继承DataRow类,以便继承的DataTable可以具有DataTable.NewRow()
因此,我想通过向类中添加int来扩展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 ////////////////////////
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很高兴提供帮助。