Massive Liste der Controller-Konstruktorargumente bei Verwendung von DI in MVC
Ich arbeite an ASP.NET MVC3-Lösung, die Abhängigkeitsinjektion mit Autofac verwendet. Unsere Controller werden von autofac ordnungsgemäß erstellt und alle erforderlichen Objekte werden ordnungsgemäß übergeben. Diese Objekte umfassen normalerweise Dienste, Repositorys und Mapper, die Domänenobjekte in MVC-Modelle (Ansichtsmodelle) konvertieren. Der Controller-Konstruktor sieht also ungefähr so aus:
public abcController(
ILogger logger,
IabcRepository abcRepository,
IabcService abcService,
IMapper<AbcDomain, AbcViewModel> abcMapper,
...
)
Leider neigen diese Konstruktorparameterlisten mit der Zeit dazu, ziemlich schnell zu wachsen. Einige unserer Regler erwarten jetzt 60 oder mehr Parameter.
Haben wir hier ein Anti-Pattern erstellt?
BEARBEITEN
Ich hätte erwähnen sollen, dass wir versuchen, dem Muster eines dünnen Reglers zu folgen. Die meisten dieser Parameter sind auch Mapper - etwa 66%. Die Kontrollmethoden sind normalerweise sehr einfach und folgen entweder diesem Muster:
Rufen Sie basierend auf den Parametern den entsprechenden Service oder das Repository aufVerwenden Sie den Mapper, um das Ergebnis in ein geeignetes Ansichtsmodell zu konvertierenModell zur Ansicht übergebenOder dieses Muster:
Erhalten Sie das Modell von der PostaktionVerwenden Sie Mapper, um es in ein geeignetes Domänenobjekt zu konvertierenRufen Sie den entsprechenden Service oder das Repository mit dem Domänenobjekt auf