Шаблоны проектирования, множественное наследование - PullRequest
1 голос
/ 05 марта 2012

Это может быть c # basics 101, но я просто подумал, что если я не буду спрашивать, я никогда не узнаю, и буду обречен на написание плохо структурированного кода ... (проект будет в MVC, поэтому моим контроллерам понадобится наследовать от класса контроллера тоже)

Так или иначе. Я хотел бы структурировать свой код примерно так.

public class Global_Base_Class: System.Web.Mvc.Controller { }

public class Production_Base : Global_Base_Class { GetPoducts, AddProduct... } 

public class Risk_Base : Global_Base_Class { GetRisk, AddRisk...  }    

public class Example_View_Controller_A : Production_Base { }     

public class Example_View_Controller_B : Risk_Base { } 

Что, если мне нужно / хотелось бы иметь (чтобы высушить мой код)

public class Example_View_Controller_C : Production_Base, Risk_Base 

Я читал, что множественное наследование не является хорошей практикой / не разрешено в c # ...

Какой наилучший маршрут / лучшая практика для меня я бы использовал для достижения этой цели?

Любая помощь / ссылки будут оценены

1 Ответ

3 голосов
/ 05 марта 2012

Прежде всего: не называйте свои классы так. Microsoft написала набор рекомендаций: http://msdn.microsoft.com/en-us/library/ms229002.aspx

Ваша структура недопустима ни на одном языке ООП, поскольку отношения не is-a. Контроллер - это контроллер MVC, а не класс с вашей бизнес-логикой. Google favor composition over inheritance чтобы узнать больше.

Таким образом, ответ

Переместите общую функциональность в отдельный класс, который вы включаете во все классы, которым он нужен. (RiskService или ProductionService)

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