2014-07-24 146 views
0

我遇到了一个非常奇怪的问题,对我没有任何意义。我正在尝试将一个集合(col)分配给一个属性(PropertyEmployees),但它不会实际分配。 该属性最初表示“employee.PropertyEmployees ='employee.PropertyEmployees'抛出了'System.ObjectDisposedException'类型的异常,但它仍然保持这种方式,即使在我试图在其上分配一个新的集合之后。无法为集合分配新值

col收集包含有效数据就在尝试使用它之前。

帐户和人员属性具有相同的异常,但在为他们分配新对象后它会消失。

public IList<Employee> getEmployees(int landlordId, int propertyId) 
    { 
     try 
     { 
      IList<Employee> employees = new List<Employee>(); 
      IList<PropertyEmployee> propertyEmployees; 
      if (propertyId != 0) 
      { 
       propertyEmployees = propertyEmployeeService.getPropertyEmployeesByPropertyId(propertyId); 
       foreach (PropertyEmployee propertyEmployee in propertyEmployees) 
       { 
        employees.Add(employeeService.getEmployeeByEmployeeId(propertyEmployee.employeeId)); 
       } 
      } 
      else 
      { 
       employees = employeeService.getEmployeesByLandlordId(landlordId); 
      } 

      foreach (Employee employee in employees) 
      { 
       Collection<PropertyEmployee> col = new Collection<PropertyEmployee>(propertyEmployeeService.getPropertyEmployeesByEmployeeId(employee.employeeId)); 
       employee.PropertyEmployees = col; 
       employee.Person = personService.getPersonByPersonID(employee.personId); 
       employee.Account = accountService.getAccountByAccountId(employee.accountId.GetValueOrDefault());   
      } 

      return employees; 
     } 
     catch (ErrorHandler e) 
     { 
      throw e; 
     } 
     catch (Exception e) 
     { 
      throw new ErrorHandler(e.Message); 
     } 
    } 

回答

0

的问题是与employee对象(或属性setter访问的一些其他对象)的状态,并没有任何与col收藏价值或者它的元素。

System.ObjectDisposedException在对已处理对象执行操作时被抛出。有希望的是,Employee类包含一个IsDisposed属性,您可以在调用任何employee成员之前检查属性,

+0

它在if中运行代码时工作正常。它在else中运行代码时不起作用,即使这两个部分都可能在员工内部产生完全相同的结果。 – user3822333