Вам не хватает модели (например, MVC). Это должно решить обе ваши проблемы. Я не думаю, что вам понадобится слой DAL.
например, для таблицы Excel, содержащей список сотрудников. У вас должен быть конкретный класс для сотрудников. Список сотрудников может храниться в контейнере списка. Ваш DAO проанализирует Excel и превратит каждую строку в объект сотрудника, или примет объект сотрудника и добавит его как строку в Excel.
По первому вопросу ваш код может выглядеть следующим образом.
class EmployeeManager()
{
...
public void CreateEmployee(Employee employee)
{
dao.Add(employee);
}
public void CreateEmployees(List<Employee> employees)
{
dao.AddMany(employees);
}
...
public List<Employee> GetAllEmployees()
{
List<Employee> employees = dao.GetAll();
employees.Sort();
}
...
}
class Employee()
{
Employee(string name, string job)
{
Name = name;
Job = job;
}
...
string Name { get; set; }
string Job { get; set; }
}
class EmployeeDAO()
{
...
public List<Employee> GetAllEmployees()
{
List<Employee> employees = new List<Employee>;
//parse all rows and make make employee objects out of them.
return employees;
}
}
Для Q1, используя модель, вы будете использовать контейнеры, предоставляемые C #, для хранения списка сотрудников, их можно искать, сортировать, изменять и т. Д., И код уже готов для вас, испытан и протестирован для тебя и написали люди намного умнее тебя.
Для Q2: если вы измените Excel на XML или что-то еще, все, что вам нужно сделать, это изменить DAO. Все, что использует менеджер, должно использовать только классы в вашей модели и использовать контейнеры уже в C #.