2014-09-22 4 views
-1

Извините, я новичок в перечислениях, и я пытаюсь реализовать его в логическом контексте. В моем классе Employee я создал несколько объектов-сотрудников. Я также создал перечисление для статуса назначения объектов Employee. Моя цель - создать список сотрудников и дать каждому сотруднику статус присвоения и, наконец, выполнить его в списке, распечатав данные сотрудника и статус назначения сотрудника.Использование перечислений с объектами C#

Я интересно:

1 - Это хороший случай использовать перечисления? 2 - Как я могу присвоить каждому сотруднику статус присвоения? Например, если я хочу, чтобы Emp1 имел AssignmentStatus.Assigned, как я должен применять этот синтаксис?

public class Employee 
    { 
     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public bool IsCurrentlyEmployed { get; set; } 


     enum AssignmentStatus 
     { 
      Assigned, 
      Idle, 
      Trainee, 
      NotDefined 
     } 


     public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed) 
     { 
      Id = id; 
      FirstName = firstName; 
      LastName = lastName; 
      IsCurrentlyEmployed = IsCurrentlyEmployed; 

     } 


     public Employee Employees() 
     { 

      Employee Emp1 = new Employee(1, "John", "Smith", true); 
      Employee Emp2 = new Employee(2, "Kevin", "Moore", true); 
      Employee Emp3 = new Employee(3, "Eric", "Johnson", false); 
      Employee Emp4 = new Employee(4, "Michell", "McDevour", true); 
      Employee Emp5 = new Employee(5, "Henry", "Jones", true); 
      Employee Emp6 = new Employee(6, "Sarah", "Holmes", true); 





      List<Employee> listEmployees = new List<Employee>(); 


     } 

Thnk вы

+0

Пожалуйста, разместите код для просмотра и просмотра еще нескольких исследований. – krisdyson

+0

Мои пристрастия, похоже, я не опубликовал код. – koffe14

+0

Вы определяете тип 'enum', но вы также должны его использовать. Добавьте свойство типа 'AssignmentStatus'. BTW, в .NET допустимо также вызвать это свойство AssignmentStatus. –

ответ

2

1 - Это хороший случай использовать перечисления?

Конечно

2 - Как я могу назначить каждый сотрудник со статусом назначения?

Вы должны выставить публичное свойство типа AssignmentStatus или создать конструктор, чтобы сделать это

Например:

public class Employee 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public bool IsCurrentlyEmployed { get; set; } 
    public AssignmentStatus Status { get; set; } 

    enum AssignmentStatus 
    { 
     Assigned, 
     Idle, 
     Trainee, 
     NotDefined 
    } 

    public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed, AssignmentStatus assignmentStatus) 
    { 
     Id = id; 
     FirstName = firstName; 
     LastName = lastName; 
     IsCurrentlyEmployed = IsCurrentlyEmployed; 
     this.Status = assignmentStatus; 
    } 

    public List<Employee> Employees() 
    { 
     Employee Emp1 = new Employee(1, "John", "Smith", true, AssignmentStatus.Assigned); 
     Employee Emp2 = new Employee(2, "Kevin", "Moore", true, AssignmentStatus.Assigned); 
     Employee Emp3 = new Employee(3, "Eric", "Johnson", false, AssignmentStatus.Assigned); 
     Employee Emp4 = new Employee(4, "Michell", "McDevour", true, AssignmentStatus.Assigned); 
     Employee Emp5 = new Employee(5, "Henry", "Jones", true, AssignmentStatus.Assigned); 
     Employee Emp6 = new Employee(6, "Sarah", "Holmes", true, AssignmentStatus.Assigned); 

     List<Employee> listEmployees = new List<Employee>(); 

     listEmployees.Add(Emp1); 
     listEmployees.Add(Emp2); 
     listEmployees.Add(Emp3); 
     listEmployees.Add(Emp4); 
     listEmployees.Add(Emp5); 
     listEmployees.Add(Emp6); 

     return listEmployees; 
    } 

Я тоже фиксированный ваш метод Employees(). Хотя я бы не рекомендовал класть такой код в класс Employee, так как он не имеет логического смысла, почему Employee должен содержать список Employees?

Вы могли бы установить статус, как так:

Employee e = new Employee(0, "", "", false, Employee.AssignmentStatus.Assigned); 

Или

e.Status = Employee.AssignmentStatus.Assigned; 
+0

Прямо сейчас Employees() возвращает пустой список – Pavenhimself

+0

@Pavenhimself Лучше, чем даже компиляция, как ранее. – DGibbs

+0

Это правда. Хорошо выглядит – Pavenhimself

1
  1. Да, это хороший сценарий, чтобы использовать Перечисление
  2. Вам нужно свойство для статуса, чтобы быть в состоянии установить его для каждого сотрудника

    общественного AssignmentStatus Status {get; задавать; }

0

Вы должны использовать перечисление

public class Employee 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public bool IsCurrentlyEmployed { get; set; } 
    public AssignmentStatus EmployeeAssignmentStatus { get; set; } 


    enum AssignmentStatus 
    { 
     Assigned, 
     Idle, 
     Trainee, 
     NotDefined 
    } 


    public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed, AssignmentStatus status) 
    { 
     Id = id; 
     FirstName = firstName; 
     LastName = lastName; 
     IsCurrentlyEmployed = IsCurrentlyEmployed; 
     EmployeeAssignmentStatus = status; 
    } 


    public List<Employee> Employees() 
    { 

     Employee Emp1 = new Employee(1, "John", "Smith", true, AssignmentStatus.Assigned); 
     Employee Emp2 = new Employee(2, "Kevin", "Moore", true, AssignmentStatus.Idle); 
     Employee Emp3 = new Employee(3, "Eric", "Johnson", false, AssignmentStatus.Trainee); 
     Employee Emp4 = new Employee(4, "Michell", "McDevour", true, AssignmentStatus.NotDefined); 
     Employee Emp5 = new Employee(5, "Henry", "Jones", true, AssignmentStatus.NotDefined); 
     Employee Emp6 = new Employee(6, "Sarah", "Holmes", true, AssignmentStatus.NotDefined)); 

     List<Employee> listEmployees = new List<Employee>(); 

     listEmployees.add(Emp1); 
     listEmployees.add(Emp2); 
     listEmployees.add(Emp3); 
     listEmployees.add(Emp4); 
     listEmployees.add(Emp5); 
     listEmployees.add(Emp6); 

     return listEmployees; 

    } 
1

Я прибрала код для вас и транслируемый как назначить статус назначения. Вы найдете комментарии в коде, которые объясняют немного дальше.

public class Employee 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public bool IsCurrentlyEmployed { get; set; } 
    public eAssignmentStatus AssignmentStatus { get; set; } 

    /// <summary> 
    /// Defines the assignment status for the employee. Prefixed 'e' to denote it's an enum and avoid clashes with the property name. 
    /// </summary> 
    public enum eAssignmentStatus 
    { 
     NotDefined, 
     Assigned, 
     Idle, 
     Trainee 
    } 

    /// <summary> 
    /// Main constructor 
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="firstName"></param> 
    /// <param name="lastName"></param> 
    /// <param name="isCurrentlyEmployed"></param> 
    public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed) 
    { 
     Id = id; 
     FirstName = firstName; 
     LastName = lastName; 
     IsCurrentlyEmployed = IsCurrentlyEmployed; 
    } 

    /// <summary> 
    /// Constructor overload with eAssignmentStatus parameter 
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="firstName"></param> 
    /// <param name="lastName"></param> 
    /// <param name="isCurrentlyEmployed"></param> 
    /// <param name="assignmentStatus"></param> 
    public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed, eAssignmentStatus assignmentStatus) 
     : this(id, firstName, lastName, isCurrentlyEmployed) 
    { 
     AssignmentStatus = assignmentStatus; 
    } 

    /// <summary> 
    /// Creates some employee objects, however, I would recommend putting this method inside another 'Factory' class, as you'd have to create 
    /// an instance of Employee in order to call "Employees()" 
    /// </summary> 
    /// <returns>Now returns a list as this is what your method name implies.</returns> 
    public List<Employee> Employees() 
    { 
     Employee Emp1 = new Employee(1, "John", "Smith", true, eAssignmentStatus.Assigned); 
     Employee Emp2 = new Employee(2, "Kevin", "Moore", true, eAssignmentStatus.Idle); 
     Employee Emp3 = new Employee(3, "Eric", "Johnson", false, eAssignmentStatus.Trainee); 
     Employee Emp4 = new Employee(4, "Michell", "McDevour", true); 
     Employee Emp5 = new Employee(5, "Henry", "Jones", true); 
     Employee Emp6 = new Employee(6, "Sarah", "Holmes", true); 

     List<Employee> listEmployees = new List<Employee>(); 

     return listEmployees; 
    } 
} 
+0

Я вижу, я должен был установить enum как общедоступный, как вы предложили. благодаря – koffe14