Вопрос контейнеровозов - PullRequest
       48

Вопрос контейнеровозов

1 голос
/ 12 сентября 2010

Рассмотрим пример:

namespace ValueObjects
{
  public class User
  {
    public string UserCode { get; set; }
    public string UserName { get; set; }
  }

  public class Company
  {
    public string CompanyCode { get; set; }
  }
}

Теперь я хочу, чтобы класс User имел свойство CompanyCode. Первое очевидное решение - просто поместить свойство CompanyCode в класс User

* 1005.*

Теперь проблема здесь заключается в избыточности, потому что уже есть свойство CompanyCode для класса компании, есть ли способ, которым пользователь сможет просто использовать свойство CompanyCode компании БЕЗ наследования класса Company (проблема в том, что C # не допускает множественное наследованиеклассов) или с использованием интерфейса ICompany (но интерфейс является проблемой в объектах значения).Я думаю о том, чтобы просто включить класс компании в класс пользователя, но я буду использовать только соответствующий ему код компании.

как-то так ..

  public class User
  {
    public string UserCode { get; set; }
    public string UserName { get; set; }
    private Company company;
    public string CompanyCode { get { company.CompanyCode } set {company.CompanyCode }

  }

но тогда нет никакой разницыпросто добавив строковое свойство CompanyCode .. Нужны ваши советы, ребята.Заранее спасибо ..

1 Ответ

2 голосов
/ 12 сентября 2010

Ваше решение действительно.Вы хотите сдерживания;отношение «имеет», а не отношение «есть» (наследование).Другой вариант будет

public Company UserCompany;

, который позволит объекту User обращаться к другим открытым свойствам объекта Company, если они будут добавлены в будущем.

...