我正在尝试制作一些强类型 DataRows 的轻量级版本,以便为采用IEnumerable<T> where T : DataRow
.
我想创建一个继承自DataRow
但具有其他属性的类,如在自动生成的强类型 DataSet.Designer.cs 中。我无法让他们的代码工作,而且我确实不明白它是如何工作的:
// from AnimalDataSet.Designer.cs:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
public AnimalRow AddAnimalRow(
string Name,
int Species_ID) {
AnimalRow rowAnimalRow = ((AnimalRow)(this.NewRow()));
object[] columnValuesArray = new object[] {
null,
Name,
Species_ID};
rowAnimalRow.ItemArray = columnValuesArray;
this.Rows.Add(rowAnimalRow);
return rowAnimalRow;
}
每次我尝试模仿这个时 - 我都会收到 InvalidCastException(无法将 System.DataRow 类型的对象转换为 AnimalRow 类型)。正如我所预料的那样。
那么是什么让他们的代码更特别呢?