Не существует API, который позволял бы выполнять автоматическое заполнение всего набора типизированных данных, или такой код не создается в наборе типизированных данных, который поддерживает это. Это также трудно сделать, потому что у адаптеров таблиц нет общего базового класса, который может позволить вам сделать это.
Если вам действительно нужно это сделать, вам нужно будет поддерживать коллекцию имен типов DataTable и таблиц имен TableAdapter и выполнять итерацию по коллекции, чтобы выполнить заполнение набора данных.
Поэтому я рекомендую заполнять набор данных для каждой таблицы «жестким кодом», как указано в первых примерах кода.
EDIT
Вот одно из возможных решений.
Определите интерфейс ITableAdapter следующим образом
public interface ITableAdapter<TDataTable> : where TDataTable : DataTable
{
TDataTable SelectAll();
}
Все TableAdapter являются частичными классами, поэтому вы можете расширить их и добавить свой собственный код в частичный пользовательский класс для TableAdapter. Реализуйте ITableAdapter для каждого TableAdapter в вашем наборе типизированных данных. так что это может выглядеть так.
public partial class YourTableAdapter : ITableAdapter<YourDataSet.YourDataTableDataTable>
{
public YourDataSet.YourDataTableDataTable SelectAll()
{
return this.GetData();
}
}
Теперь вы можете перебирать каждый тип в вашей сборке и фильтровать типы типа ITableAdapter и вызывать метод SelectAll () для каждого из них, чтобы заполнить его в вашем наборе данных. :)
EDIT2
Я только что предложил другое элегантное решение этой проблемы. Все, что вам нужно сделать, это определить интерфейс ITableAdapter для сопоставления уже реализованных методов в TableAdapters, сгенерированных конструктором набора данных.
public interface ITableAdapter<TDataTable> : where TDataTable : DataTable
{
void Fill(TDataTable);
}
И расширьте ваши частичные классы TableAdapter следующим образом.
public partial class YourTableAdapter : ITableAdapter<YourDataSet.YourDataTableDataTable>
{
//No code required here, since Fill method is already defined in TableAdapter :)
}