2016-12-23 5 views
-1

Ich entwickle ein Programm, das Hinzufügen, Bearbeiten usw. von Mitarbeitern ermöglicht. Ich haftete daran, dem Angestellten eine Abteilung zu geben (Abteilung ist eine Klasse), die ich basierend auf seinem Namen erstellen muss. Irgendeine Hilfe?Erstellen eines Objekts basierend auf einer Zeichenfolge

Code:

Abteilung Klasse

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; } 
} 

Mitarbeiter Klasse

abstract class Employee 
{ 
    public int EmployeeId { get; set; } 
    public string EmployeeName { get; set; } 
    public string EmployeeSurname { get; set; } 
    public string Address { get; set; } 
    public int Grade { get; set; } 
    public double Salary { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 

    public Department DepartmentOfEmployee {get; set; } 

Methode zum Sammeln von Daten

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; 
} 
+1

Es würde helfen, wenn Sie uns die Definition von 'Mitarbeiter',' Abteilung' zeigen und wo/wie Sie eine Liste von Abteilungen speichern, die wir nachschlagen können, wenn der Benutzer etwas eingibt (und wie sich das auf den de bezieht) partment) – Jamiec

+0

Instantiieren Sie einfach eine neue Instanz der Abteilung Klasse und füllen Sie die Eigenschaften –

+0

Haben Sie eine Liste von Abteilungen in einigen DB? Oder möchten Sie jedes Mal, wenn Sie einen Mitarbeiter hinzufügen, eine neue Abteilung hinzufügen? – Stephen

Antwort

2

Sie können nicht nur direkt einen String t konvertieren o eine Klasseninstanz Jedoch Sie etwas ähnliches unter Verwendung der Factory Pattern erreichen könnten:

public static class DepartmentFactory 
{ 
    public static Department CreateDepartment(string deptStr) 
    { 
     var dept = new Department(); 
     // rest of the code 

     return dept; 
    } 
} 

Und Ihren neuen Code:

ordentlich
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; 
} 
0

Um die Dinge hier nur eine ENUM nutzen und wie weiter unten im Text Wert übergeben:

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 
    } 
Verwandte Themen