Совместное использование свойства в DTO с использованием атрибута Category C#

Я работаю над моделью сотрудника, она содержит всю информацию о сотруднике, которую я уже опубликовал в разделе Как эффективно использовать DTO на основе сценария в C#. Как я мог разделить одно свойство для нескольких групп, используя атрибут категории C#.

Например:

public class Employee
{
    public int EmployeeId { get; set; }
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
    public string HomePhone { get; set; }
    public string MobilePhone { get; set; }
}

У меня есть следующие четыре метода для получения записей сотрудника

public Employee GetEmployeeName(int id)
{
    // The return should contain only FirstName, MiddleName and LastName. 
    // The rest of the properties should be non-accessable (i.e., Private)
}

public Employee GetEmployeeContacts(int id)
{
    // The return should contain only EmailAddress, HomePhone and MobilePhone. 
    // The rest of the properties should be non-accessable (i.e., Private)
}

public Employee GetEmployeeNameEmail(int id)
{
    // The return should contain only FirstName, MiddleName, LastName and EmailAddress. 
    // The rest of the properties should be non-accessable (i.e., Private)
}

public Employee GetEmployee(int id)
{
    // It should return the entire Employee object
}

Как я мог этого добиться? Не могли бы вы, пожалуйста, любую помощь в этом отношении.

1 ответ

Пример, это общее использование для DTO:

public class EmployeeNameDto
{
    public int EmployeeId { get; set; }
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
}

public EmployeeNameDto GetEmployeeName(int id)
{
    Employee emplpoyee = employeeRepository.Find(id):
    return new EmployeeNameDto() {
      EmployeeId = emplpoyee.EmployeeId,
      FirstName = emplpoyee.FirstName,
      MiddleName = emplpoyee.MiddleName,
      LastName = emplpoyee.LastName
    };
}

Или же

public class Employee
{
    public int EmployeeId { get; set; }
    public string FirstName { get; 
      set {
        if (condition == false)
          throw new Exception(" is Read Only !")
      }
    }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
    public string HomePhone { get; set; }
    public string MobilePhone { get; set; }
}
Другие вопросы по тегам