如何从两个不同的 类 分配对象?
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) ...
然后您可以为现有对象赋予它们价值。
我有两个构造函数 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) ... 然后您可以为现有对象赋予它们价值。