2012-05-24 4 views
0

Я реализую шаблон MVP в asp.net и путаюсь с множеством примеров в Интернете.MVP Pattern Property Set или get

Я вижу, что IEnumerable реализован как get; и несколько раз, как установлено; также в других сценариях я вижу метод void SetCategories (категории IEnumerable);

Мой вопрос для договора для просмотра (например: IView), который показывает список категорий IEnumerable категории

1) Когда я должен реализовать void SetCategories(IEnumerable<Category> categories);


2) Когда я Реализовать IEnumerable<Category> Categories { get; set; }


3) Когда я должен реализовать IEnumerable<Category> Categories { set; }

ответ

0

1 и 3 очень похожи, они обеспечивают доступ только для записи к категориям. Если ваш ведущий делает не необходимо прочитать раздел «Категории», то вы должны использовать 1 или 3.

Какой? Здесь может применяться code analysis rule.

Если замена коллекции является целью, предпочтительным шаблоном проектирования является включение метода удаления всех элементов из коллекции и метода для повторного заполнения коллекции.

Однако в MVP использование свойств по методам более распространено (вероятно, именно поэтому вы видели примеры всех трех сценариев.) Так что это действительно вопрос предпочтительного стиля.

Вариант 2 предоставляет все вышеуказанное, а также доступ для чтения к объекту. Это нужно, если ведущий должен просмотреть коллекцию и прочитать значение из нее (или все значения). Я думаю, что предпочтительный шаблон здесь будет иметь свойство получить либо всю коллекцию в состоянии только для чтения, либо в выбранной категории, то есть. один Category.

  • Если вам нужно читать и писать доступ, вариант 2 будет работать, но это будет обидеть FXCop.

  • Если вам просто нужно доступ на запись, вариант 1 обрадует FXCop

+0

Спасибо за прояснение – Greens

Смежные вопросы