Ich verwende als IoC-Container sehr gerne StructureMap, dies hauptsächlich weil man dort sehr einfach einen Großteil der Registrierung der Componenten über Konventionen erledigen kann.
In ASP.NET MVC 3 RC gibt es nun eine einige Änderungen gegenüber AS.NET MVC 2. Nun veröffentliche ich deshalb hier meinen Standard-Initialisierungscode für StructureMap und MVC 3. Darauf aufbauen müssen natürlich die Besonderheiten der Anwendung berücksichtigt werden. Aber es ist ein guter Startpunkt.
Die Standard-Konventionen
Hiermit werden die möglichen Komponenten in MVC 3 registriert: Somit müssen ModelBinder und Validatoren etc. nicht mehr manuell den einzelnen Aufzählungen hinzugefügt werden. Es reicht sie im Container zu haben. Dazu muss nur der DepencyResolver hinzugefügt werden.
Auch werden alle bekannten Typen im Container für die Property-Injection definiert.
Controller Konvention
Die Konvention damit alle Controller gefunden werden.
DependencyResolver
Eine ControllerFactory braucht man nicht mehr. Es gibt nun IDependencyResolver, welches innerhalb von MVC 3 verwendert wird um einen Großteil der MVC 3 Komponenten zu instanzieren. Möchte man wirklich noch weiteren Einfluss auf die Controller Erstellung nehmen, so implementiert man nur noch den IControllerActivator.
Property Injection bei ActionFilter-Attributen
Möchte man in den Filter-Attributen Property Injection verwenden – da Constructor Injection nicht möglich ist – so kann man dies nun auf folgende Weise machen, ohne wie bei MVC 2 einen eigenen ControllerActionInvoker bauen zu müssen.
Für Property Injection bei einem ActionResult muss man weiterhin einen angepassten ControllerActionInvoker implementieren.
Print | posted on Monday, November 22, 2010 12:52 PM
Der Eintrag ist mir etwas Wert