我有一个哲学编程问题。假设我有一个名为Employees的类。员工拥有从dataTable中设置的业务成员。为了填补这一点,我使用了一个方法,该方法需要雇员类的一个实例,通过dataTable循环,并设置传递给它的实例的成员。例如:我应该使用带参数或函数的方法吗?
public void GetEmployees(objEmployee)
{
//the function I am calling returns a dataTable of all the employees in the db.
dim dt as DataTable = dbEmployees.GetEmployees();
foreach(DataRow drow in dt.rows)
{
objEmployee.Name = drow["Name"].ToString();
objEmployee.ID = drow["ID"].ToString();
}
}
然后我会叫这样的代码在我的UI逻辑:
public void GetEmployees()
{
Employees employee = new Employees();
employee.GetEmployees(employee);
}
我的问题是,是否可以接受我的类的实例传递到一个方法和更改属性就像我现在这样,还是会更加面向对象的,通过这样的功能做到这一点:
public Employees GetEmployees()
{
Employees objEmployee = new Employees();
//the function I am calling returns a dataTable of all the employees in the db.
dim dt as DataTable = dbEmployees.GetEmployees();
foreach(DataRow drow in dt.rows)
{
objEmployee.Name = drow["Name"].ToString();
objEmployee.ID = drow["ID"].ToString();
}
return objEmployee
}
然后,我会这样称呼它:
private void GetEmployees()
{
Employees employee;
employee = employee.GetEmployees();
}
在方法上使用函数有什么优势吗?谢谢!
啊,你是对的。抱歉;这不是实际的代码,只是我搞砸了一个例子:)你会建议什么来解耦数据访问层和业务层? – Austin 2009-02-09 18:07:39
这完全取决于您的应用程序的体系结构。我通常会建议将DAL放入它自己的程序集中,与域对象分开,并从DAL引用域对象,而不是反过来。业务层应该是相对独立的。 – 2009-02-09 18:16:51
但是,如果你这样做,你还是有同样的问题吗?如果您不得不从数据层引用域对象,它是如何独立的? – Austin 2009-02-09 19:12:07