Интерфейс и метод для DTO и Entity - PullRequest
0 голосов
/ 30 октября 2019

Если у меня есть класс сущностей

public class BarcodeSetting
{
   string Prefix {get;set;}
   string RangeStart {get;set;}
   string RangeEnd {get;set;}
}

и DTO

public class BarcodeSettingDTO
{
   string Prefix {get;set;}
   string RangeStart {get;set;}
   string RangeEnd {get;set;}
}
  1. У меня вопрос, стоит ли использовать BarcodeSettingDTO в клиенте (winform)? Или создайте другой класс, такой как BarcodeSettingViewModel

  2. И если я хочу иметь метод IsBarcodeValid

public bool IsBarcodeValid(BarcodeSettingDTO dto, string barcode)
{
   // return true if barocode is in BarcodeSettingDTO range
   // return false
}

Где я должен разместитьэто (как статический вспомогательный метод, или поместить его внутрь BarcodeSettingDTO)? Раньше я думал, что IsBarcodeValid должен быть методом внутри BarcodeSetting, но анемичные модели не могут иметь никаких методов.

Если у меня есть несколько DTO (в разных приложениях) для одного объекта. Как повторно использовать некоторые методы? Например, BarcodeSettingDTO и BarcodeSettingAnotherDTO (что почти как BarcodeSettingDTO). Означает ли это, что я должен создать IBarcodeSettingDTO для DTO и использовать IsBarcodeValid (IBarcodeSettingDTO dto, string barcode). Я искал в Google, и некоторые люди считают, что у DTO не должно быть никакого интерфейса. Так что я действительно запутался. Как правильно решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

1. Мой вопрос должен ли я использовать BarcodeSettingDTO в клиенте (winform)? Или создайте другой класс, например, BarcodeSettingViewModel

== >> Это зависит. Это всегда хорошо, чтобы отделить и просмотреть родственные цели модели отдельно. Если вы видите точно такие же атрибуты / методы в модели формы и DTO, вы можете оставить их одинаковыми. Но ваш открытый DTO не должен использоваться как постоянный объект или должен напрямую взаимодействовать с постоянным слоем.

2. IsBarCodeValid: Где я должен разместить его (как статический вспомогательный метод или поместить его внутри BarcodeSettingDTO)?

== >> Я бы посоветовал создать вспомогательный класс Validator для модульности и расширяемости

3. Если у меня есть несколько DTO (в разных приложениях) для одного объекта. Как повторно использовать некоторые методы?

== >> Использовать принцип наследования. Создайте BarcodeSettingDTO в качестве родителя и BarcodeSettingAnotherDTO в качестве дочернего, т. Е.

BarcodeSettingAnotherDTO extends BarcodeSettingDTO
0 голосов
/ 30 октября 2019

Dto просто используют для передачи данных между уровнями, поэтому добавление некоторого поведения, особенно когда это относится к проверке или бизнес-логике, не входит в его обязанности. Попробуйте сконцентрировать свои проверки и бизнес-правила в классах проверки бизнес-правил или в богатых классах сущностей.

...