如何从两个不同的 类 分配对象?

How to assign objects from two different classes?

我有两个构造函数 Employee Employee(string id, string FirstName, string LastName) 和 ProjectProject(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 中分离了 classes;我不能使用与 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);
            }
        }

但是调试的时候显示Employees里面没有元素。我无法使用 Find 查找具有相同 EmpId 的员工;与项目和项目相同。我应该如何将项目分配给员工,我做错了什么?

这个设计看起来像数据库设计。 在 C# 中很容易建立关系,例如 class 只需具有 属性 和另一个 class.

的类型

我只想给出一个不同设计的快速提示(而不是为关系本身提供一个实体):

class Project
{
    public List<Employee> Employees { get; set; } = new List<Employee>();
    // (...) other properties
}

所以当你想分配一个 Employee 给一个项目时,你可以简单地做

Employee e = GetEmployee(...);
project.Employees.Add(e);

有帮助吗?

在您的 public void Add(Assign assign) 函数中,您创建 classA 和 classB,这些是此 class 的新对象并且没有值在他们中。 如果你想使用这样的功能,你可以像这样制作功能: public void Add(Assign assing, Employeeclass classA, Projectclass classB) ... 然后您可以为现有对象赋予它们价值。