Freigabe von Code zwischen ASP.NET MVC Controllern

8

Ich habe hier ein paar Controller, die Methoden enthalten, die ich in anderen Controllern verwenden kann.

Ich habe erwogen, einige der allgemeinen Funktionen auf einen Basis-Controller zu übertragen, von dem diese dann erben könnten. Das Problem dabei ist, dass ich Methoden benötige, die ich in mehreren Basissteuerelementen brauche, auf die ich nicht zugreifen könnte. (Weil wir nicht von mehreren Basis-Controllern erben können).

Meine andere Idee ist, die allgemeine Funktionalität außerhalb des Ordners Controller in ihre eigenen Klassen zu verschieben.

Was würdest du tun? Gibt es in ASP.NET MVC eine großartige Möglichkeit, Code wie diesen zu teilen, den ich noch nicht kenne?

    
Jamie Dixon 02.11.2009, 11:53
quelle

3 Antworten

14

Es gibt eine Faustregel über die objektorientierte Programmierung, dass Sie die Komposition gegenüber der Vererbung bevorzugen sollten, und sie fügt sich sehr gut in dieses Szenario ein.

Ich würde einen oder mehrere Dienste erstellen, die die fraglichen Methoden kapseln und diese Dienste dann von den Controllern verwenden.

Extrapunkte extrahieren Sie eine Schnittstelle von den fraglichen Diensten und injizieren Sie die Schnittstelle in die Controller für maximale Trennung von Bedenken.

    
Mark Seemann 02.11.2009, 11:58
quelle
4

Ich würde in eine Hilfsklasse oder etwas hineinrechnen. Von dem, was Sie beschrieben haben, hilft die Funktionalität den Controllern /

    
Johnno Nolan 02.11.2009 11:56
quelle
1

Die Auswahlmöglichkeiten scheinen Basiscontroller oder Hilfsklasse zu sein. Sie könnten die Kontrolle über die Controller-Erstellung übernehmen und den Helper in die Controller einspeisen, die sie benötigen.

    
IanT8 02.11.2009 11:59
quelle

Tags und Links