Inversion of Control (IoC) in ASP.NET MVC mit Castle Windsor einrichten

8

Ich gehe über Sandersons Pro ASP.NET MVC Framework und in Kapitel 4 diskutiert er Erstellen einer benutzerdefinierten Controller Factory und es scheint, dass die ursprüngliche Methode AddComponentLifeStyle oder AddComponentWithLifeStyle , die zum Registrieren von Controllern verwendet werden, ist jetzt veraltet:

%Vor%

Der neue Vorschlag ist, Register(Component.For<I>().ImplementedBy<T>().Named(key).Lifestyle.Is(lifestyle)) zu verwenden, aber ich kann nicht herausfinden, wie man den Typ des implementierenden Controllers in der Methode ImplementedBy<???>() darstellt. Ich probierte ImplementedBy<t>() und ImplementedBy<typeof(t)>() , aber ich kann nicht den geeigneten Weg finden, den Implementierungstyp zu übergeben. Irgendwelche Ideen?

    
Kiril 26.02.2011, 01:13
quelle

5 Antworten

6

Ich tue dies mit dem ControllerBuilder.SetControllerFactory und der Code, den Sie im Open-Source-Projekt MvcContrib finden können:

Global.asax.cs

%Vor%

WindsorControllerFactory

%Vor%

WindsorExtensions (siehe MvcContrib )

%Vor%

ControllerExtensions (siehe MvcContrib )

%Vor%     
Martin Buberl 26.02.2011, 02:22
quelle
2

Sie sollten auch die neue Installer-Option in der neuesten Windsor-Version in Betracht ziehen. Es gibt mehr Dokumentation zu Windsors Tutorial: Ссылка

    
Ryan Tofteland 26.02.2011 03:12
quelle
1

Es gibt ein Tutorial (in Arbeit, aber 9 Teile sind bereits draußen), das die Verwendung von Windsor in ASP.NET MVC diskutiert hier . Das ist das auf dem neuesten Stand und für die meisten der üblichen Nutzung Ressource auf dem Thema so weit wie ich weiß.

    
Krzysztof Kozmic 26.02.2011 07:21
quelle
1

@Lirik, als Ergänzung: Lassen Sie Ihre eigene benutzerdefinierte IControllerFactory out, wenn Sie MVC3 verwenden. Registrieren Sie einfach Controller mit Windsor und implementieren Sie IDependencyResolver mit Windsor-Container darin.

Setzen Sie Ihre IDependencyResolver als MVC DependencyResolver und DefaultControllerFactory verbindet automatisch die im Container registrierten Controller (via DependencyResolver ).

    
Vasilio Ruzanni 26.02.2011 07:30
quelle
-1

etwas wie:

%Vor%

ControllersRegistrarMarker ist nur eine leere Klasse in Ihrer Controller-Baugruppe

    
jenson-button-event 26.02.2011 01:23
quelle