C# 基于字符串创建对象

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;

我正在开发一个允许添加、编辑员工等的程序。我陷入了给员工一个Department部门是一个类的困境,我需要根据它的名称创建这个类。有什么帮助吗

代码:

系级

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
    }