2010-11-21 3 views
1

Grundsätzlich möchte ich eine Möglichkeit zum Ausdruck bringen: Finden Sie alle Klassen mit der Basisklasse AbstractDataService<> und lösen Sie sie durch ihre Schnittstelle und nicht durch ihre Basisklasse.
Im Moment habe ich dies und es funktioniert, aber es ist nicht sehr elegant:Gibt es eine bessere Möglichkeit, diese fließende Registrierung in Windsor auszudrücken?

container.Register(AllTypes.Pick() 
    .FromAssembly(typeof(AbstractDataService<>).Assembly) 
    .If(Component.IsInSameNamespaceAs(typeof(AbstractDataService<>))) 
    .WithService.FirstInterface()); 

Ist es möglich?

+0

Sieht gut aus für mich ... warum sagst du, es ist nicht elegant? –

+0

@Mauricio Scheffer: Ich vermisse etwas wie HasBaseOf (typeof (AbstractDataService <>)). –

Antwort

0

Sie können Zwischenvariablen erstellen. Aber ... ich bin mir nicht sicher, was das eigentliche Problem ist. Komplexe Dinge sehen komplex aus. Das ist die Realität.

+0

Aber auch komplexe Dinge können durch Helfer, die ich nicht kenne, vereinfacht werden. –

1

Vielleicht könnten Sie .BasedOn (...) verwenden?

+0

BastedOn gibt aus irgendeinem Grund alle Typen in meinem Namespace zurück, wenn ich .If (Component.IsInSameNamespaceAs (typeof (AbstractDataService <>))) weglasse. –

Verwandte Themen