簡體   English   中英

如何分配來自兩個不同類的對象?

[英]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 中的類; 我不能使用相同的代碼,因為沒有上下文就不能存在EmployeesProjects ,因此我為員工和項目創建了引用變量。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM