Должен переопределить Объект. Равняется для Объектов (в DDD)?

Обычно я пытаюсь следовать за следующим шаблоном:

  • статические участники (обычно имеют другой контекст, должно быть ориентировано на многопотоковое исполнение, и т.д.)
  • члены экземпляра

, Каждая часть (статичный и экземпляр) состоит из следующих типов элемента:

  • операторы (всегда статичны)
  • поля (инициализированный перед конструкторами)
  • конструкторы
  • деструктор ( традиция для следования за конструкторами )
  • свойства
  • методы
  • события

Тогда участники отсортированы по видимости (от меньше до более видимого):

  • частный
  • внутренний
  • внутренний защищенный
  • защитил
  • общественность

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

6
задан Soe Moe 14 July 2009 в 15:52
поделиться

2 ответа

Есть три случая, которые вы, возможно, захотите различить.

  1. У вас есть две ссылки на одну и ту же сущность. В этом случае нормальные операторы равенства выполнят свою работу правильно. Не нужно ничего переопределять.

  2. У вас есть два экземпляра в памяти одного и того же объекта. Если вы правильно проектируете свои репозитории, этой ситуации можно избежать, но иногда это ситуация, с которой вам придется работать. Ваш пример customer1.Id == customer2.Id в этом случае будет работать нормально.

  3. У вас есть две разные сущности, но вы хотите знать, имеют ли они одинаковые значения свойств. Это может быть запах кода. Вы можете рассматривать тип значения как объект. Если это действительно то, что вы хотите сделать, вам следует реализовать это отдельно от обычных механизмов .net == и .Equals. (например . IsSameAs (субъект клиента)), чтобы избежать путаницы.

7
ответ дан 16 December 2019 в 21:44
поделиться

Если вы рассматриваете возможность переопределения Object.Equals, вы должны иметь в виду, что вы также должны переопределить GetHashCode ().

1
ответ дан 16 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: