Совместное использование кода между контроллерами ASP.NET MVC - PullRequest
8 голосов
/ 02 ноября 2009

У меня есть несколько контроллеров, которые содержат методы, которые я могу использовать в других контроллерах.

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

Моя другая идея - перенести общую функциональность в свои классы вне папки Controller.

Что бы вы сделали? Есть ли в ASP.NET MVC отличный способ поделиться кодом, о котором я пока не знаю?

Ответы [ 3 ]

14 голосов
/ 02 ноября 2009

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

Я бы сделал одну или несколько служб, которые инкапсулируют рассматриваемые методы, а затем использовал бы эти службы из контроллеров.

Для получения дополнительных очков извлеките интерфейс из рассматриваемой службы (служб) и введите интерфейс в контроллеры для максимального разделения проблем.

4 голосов
/ 02 ноября 2009

Я бы выбрал вспомогательный класс или что-то в этом роде. Из того, что вы описали, функционал помогает контроллеры /

1 голос
/ 02 ноября 2009

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

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