[英]How to assign objects from two different classes?
我有兩個構造函數 Employee Employee(string id, string FirstName, string LastName)
和 Project Project(string PID, string PName)
。 要添加員工或查看整個項目列表,我創建了一個業務邏輯:
public class Employeeclass
{
public List<Employee> Employees { get; set; } = new List<Employee>();
public void AddEmployee(Employee employee)
{
Employees.Add(employee);
}
public List<Employee> GetAllEmployee()
{
return Employees;
}
}
public class Projectclass
{
public List<Project> Projects { get; set; } = new List<Project>();
public void AddProject(Project project)
{
Projects.Add(project);
}
public List<Project> GetAllProject()
{
return Projects;
}
}
在這個業務邏輯中,我想將一個項目分配給一個員工。 為此,我生成了一個單獨的構造函數Assign(string EmpId, string PID)
並創建了一個 class 來分配項目。 首先,我添加一名員工,然后添加一個項目。 通過使用 EmpId 和 PID,我想將項目分配給員工。 當所有業務邏輯都在一個 class 下時,這樣做是可能的。
public class Assignclass
{
public List<Assign> Assigns { get; set; } = new List<Assign>();
//assign employees to project
public void Add(Assign assign)
{
var id = assign.EmpId;
var pid = assign.PID;
var emp = Employees.Find(a => a.EmpId == id);
var prjct = Projects.Find(c => c.PID == pid);
if (emp != null || prjct != null)
{
Assigns.Add(assign);
}
}
}
當我將 Employeeclass、Projectclass 和 Assignclass 作為單個 class 時,我可以使用此代碼。現在我已經分離了 Employeeclass、Projectclass、Assignclass 中的類; 我不能使用相同的代碼,因為沒有上下文就不能存在Employees
和Projects
,因此我為員工和項目創建了引用變量。
public void Add(Assign assign)
{
Employeeclass classA = new Employeeclass();
Projectclass classB = new Projectclass();
List<Employee> Employes = classA.Employees;
List<Project> Projcts = classB.Projects;
//List<Assign> Assignss = classC.Assigns;
var id = assign.EmpId;
var pid = assign.PID;
var emp = Employes.Find(a => a.EmpId == id);
var prjct = Projcts.Find(c => c.PID == pid);
if (emp != null || prjct != null)
{
Assigns.Add(assign);
}
}
但是調試的時候顯示Employes里面沒有元素。 我無法使用 Find 查找具有相同 EmpId 的員工; 與項目和項目相同。 我應該如何將項目分配給員工,我做錯了什么?
在您的 public void Add(Assign assign) function 中,您創建了 classA 和 classB,這些是此 class 的新對象,並且其中沒有任何值。 如果你想像這樣使用 function,你可以像這樣制作 function:public void Add(Assign assing, Employeeclass classA, Projectclass classB)... 然后你可以給現有的 object 賦予它們價值。
這個設計看起來像一個數據庫設計。 在 C# 中很容易建立關系,例如 class 只具有另一個 class 類型的屬性。
我只想給出一個不同設計的快速提示(而不是為關系本身提供一個實體):
class Project
{
public List<Employee> Employees { get; set; } = new List<Employee>();
// (...) other properties
}
所以當你想分配一個Employee
到一個項目時,你可以簡單地做
Employee e = GetEmployee(...);
project.Employees.Add(e);
這有幫助嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.