Я пытаюсь сделать облегченную версию некоторых строго типизированных 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).Как я и ожидал.
Так что делает их код более особенным?