C# 基于字符串创建对象
我正在开发一个允许添加、编辑员工等的程序。我陷入了给员工一个Department部门是一个类的困境,我需要根据它的名称创建这个类。有什么帮助吗 代码: 系级C# 基于字符串创建对象,c#,type-conversion,C#,Type Conversion,我正在开发一个允许添加、编辑员工等的程序。我陷入了给员工一个Department部门是一个类的困境,我需要根据它的名称创建这个类。有什么帮助吗 代码: 系级 class Department { public Department() { } public int DepartmentId { get; set; } public string DepartmentName { get; set; } public string Location { get;
class Department
{
public Department() { }
public int DepartmentId { get; set; }
public string DepartmentName { get; set; }
public string Location { get; set; }
public ICollection<Employee> EmployeesAtDepartment { get; set; }
}
收集数据的方法
public Employee EmpDetails(Employee NewEmp)
{
Console.WriteLine("Enter Employee Name:");
NewEmp.EmployeeName = Console.ReadLine();
Console.WriteLine("Enter Employee Surname:");
NewEmp.EmployeeSurname = Console.ReadLine();
Console.WriteLine("Enter Employee Address:");
NewEmp.Address = Console.ReadLine();
Console.WriteLine("Enter Employee Grade:");
NewEmp.Grade = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("Enter Employee Salary:");
NewEmp.Salary = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter Department of Employee:");
NewEmp.DepartmentOfEmployee = Console.ReadLine();
Console.WriteLine("Enter Employee Username:");
NewEmp.Username = Console.ReadLine();
Console.WriteLine("Enter Employee Password:");
NewEmp.Password = Console.ReadLine();
return NewEmp;
}
您不能直接将字符串转换为类实例。但是,您可以通过以下方法实现类似的效果: 以及您的新代码:
public Employee EmpDetails(Employee NewEmp)
{
Console.WriteLine("Enter Employee Name:");
NewEmp.EmployeeName = Console.ReadLine();
Console.WriteLine("Enter Employee Surname:");
NewEmp.EmployeeSurname = Console.ReadLine();
Console.WriteLine("Enter Employee Address:");
NewEmp.Address = Console.ReadLine();
Console.WriteLine("Enter Employee Grade:");
NewEmp.Grade = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("Enter Employee Salary:");
NewEmp.Salary = Convert.ToDouble(Console.ReadLine());
// Edit here
Console.WriteLine("Enter Department of Employee:");
NewEmp.DepartmentOfEmployee = DepartmentFactory.CreateDepartment(Console.ReadLine());
Console.WriteLine("Enter Employee Username:");
NewEmp.Username = Console.ReadLine();
Console.WriteLine("Enter Employee Password:");
NewEmp.Password = Console.ReadLine();
return NewEmp;
}
要保持这里的整洁,只需使用枚举并按如下方式传入文本值:
public class Employee
{
public string Name { get; private set; }
public AvailableClasses Class { get; private set; }
public Employee(string name, string myClass)
{
Name = name;
AvailableClasses classEnum;
if (!Enum.TryParse(myClass, true, out classEnum))
classEnum = AvailableClasses.Other;
Class = classEnum;
}
}
public enum AvailableClasses
{
Maths,
Science,
Other
}
如果您向我们展示员工、部门的定义,以及在何处/如何存储部门列表,我们可以在用户键入某些内容时查找这些内容,以及这些内容与部门的关系,这会有所帮助。只需实例化Department类的新实例并填充属性您在某些数据库上有部门列表吗?还是每次添加员工时都要添加一个新部门?
public Employee EmpDetails(Employee NewEmp)
{
Console.WriteLine("Enter Employee Name:");
NewEmp.EmployeeName = Console.ReadLine();
Console.WriteLine("Enter Employee Surname:");
NewEmp.EmployeeSurname = Console.ReadLine();
Console.WriteLine("Enter Employee Address:");
NewEmp.Address = Console.ReadLine();
Console.WriteLine("Enter Employee Grade:");
NewEmp.Grade = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("Enter Employee Salary:");
NewEmp.Salary = Convert.ToDouble(Console.ReadLine());
// Edit here
Console.WriteLine("Enter Department of Employee:");
NewEmp.DepartmentOfEmployee = DepartmentFactory.CreateDepartment(Console.ReadLine());
Console.WriteLine("Enter Employee Username:");
NewEmp.Username = Console.ReadLine();
Console.WriteLine("Enter Employee Password:");
NewEmp.Password = Console.ReadLine();
return NewEmp;
}
public class Employee
{
public string Name { get; private set; }
public AvailableClasses Class { get; private set; }
public Employee(string name, string myClass)
{
Name = name;
AvailableClasses classEnum;
if (!Enum.TryParse(myClass, true, out classEnum))
classEnum = AvailableClasses.Other;
Class = classEnum;
}
}
public enum AvailableClasses
{
Maths,
Science,
Other
}