在不同方法中访问一个对象的好方法是什么

时间:2011-07-15 16:34:26

标签: c#

我有一个对象人,我在前端的几种方法中使用。我该怎么做到最好?每次都创建新实例?还是公开的?或者是其他东西?对我来说似乎是一个非常基本的问题。

public class Employee
    {
    public void DeleteEmployee(int employeeId)
            {
               ......
            }

    public void UpdateEmployee(int employeeId)
            {
               ......
            }

}

然后在前端(我就是这样做的):

protected void OnDelete(object sender, EventArgs e)
        {
         Employee emp = new Employee();
          emp.DeleteEmployee(empId);
       }
 protected void OnUpdate(object sender, EventArgs e)
        {
         Employee emp = new Employee();
          emp.UpdateEmployee(empId);
       }

3 个答案:

答案 0 :(得分:2)

我认为你所寻找的就是我所谓的员工经理。执行此操作的两种常用方法是使用静态方法创建单独的EmployeeManager对象以执行操作,或将静态方法添加到Employee对象。关于哪种方法是首选方法存在争议。但是,常见的思维过程是Employee实例不应该知道它是如何持久化的。所以结果看起来要么......

EmployeeManager.DeleteEmployee(empId);

...或

Employee.DeleteEmployee(empId);

答案 1 :(得分:1)

制作方法static

public static void DeleteEmployee(int employeeId)
{
    ...
}

直接在Employee

上调用它
protected void OnDelete(object sender, EventArgs e)
{
    Employee.DeleteEmployee(empId);
}

答案 2 :(得分:0)

通常我会说员工不应该负责创建/更新/删除自己。数据上下文(或存储库,或其他)应该承担这一责任。

所以你会有类似的东西(袖口,双重检查拼写/语法)

EmployeeRepository //Normally Inherits a BaseRepository and/or implements an IRepository<T>
{
    public void Create([some parameters here]) {...}
    public void Delete(Employee employee) {...}
    public Employee Find(Expression<Func<Employee, bool>> predicate) {...}
    //other methods...
}

你的代码会调用

static void Main()
{
    EmployeeRepository Employees = new EmployeeRepository();

    Employee bob = Employees.Create("Bob");

    Employee fired = Employees.Find(e => e.Id == whatever);
    Employees.Delete(fired);
}