Frage

Von dem, was ich über Windsor / Microkernel gelesen habe es theoretisch möglich ist, alles zu tun, was Sie tun können, XML-Dateien mit Code. Wie in der Tat - und mich bitte korrigieren, wenn ich falsch -. Es scheint, wie der große Beitrag der Windsor-Schicht ist XML-Konfiguration für Dinge Microkernel hinzufügen kann bereits tun

Allerdings habe ich in letzter Zeit mit der Suche nach heraus zu kämpfen, wie eine etwas kompliziertere Funktionalität in Code zu implementieren, obwohl (dh. wie ein Standard-Konstruktor Argument Wert zuweisen). Jetzt, während ich xml in meiner Produktionsfreigabe verwenden, werde ich bin Registrierung Komponenten in Code für meine Tests und das ist immer recht problematisch. Dies wird nicht durch den unglücklichen Zustand ihrer Dokumentation und die Tatsache, dass der einzigen Artikel hilft ich Fokus auf xml Registrierung finden.

Kennt jemand eine Quelle, die auflistet, wie die Dinge im Code registrieren (vorzugsweise mit der XML-Äquivalent)? Verwendung nicht-xml Baring die Existenz, dass sich jemand einfach von einem Open-Source / Beispielprojekt wissen, wo ist es erhebliche Castle Windsor / Microkernel?

War es hilfreich?

Lösung

Ich habe immer gefunden am Gerät suchen testen Sie die beste Art und Weise zu lernen, wie ein Open-Source-Projekt zu verwenden. Castle verfügt über ein Fluent Interface, dass Sie alles in Code tun können. Aus dem WindsorDotNet2Tests Test Fall:

[Test]
    public void ParentResolverIntercetorShouldNotAffectGenericComponentInterceptor()
    {
        WindsorContainer container = new WindsorContainer();
        container.AddComponent<MyInterceptor>();

        container.Register(
            Component.For<ISpecification>()
                .ImplementedBy<MySpecification>()
                .Interceptors(new InterceptorReference(typeof(MyInterceptor)))
                .Anywhere
            );
        container.AddComponent("repos", typeof(IRepository<>), typeof(TransientRepository<>));

        ISpecification specification = container.Resolve<ISpecification>();
        bool isProxy = specification.Repository.GetType().FullName.Contains("Proxy");
        Assert.IsFalse(isProxy);
    }

Für mehr Besuche die die ComponentRegistrationTestCase und AllTypesTestCase

Es gibt auch einen DSL, es zu tun, das ist meine bevorzugte Option, da es wirklich Dinge vereinfacht und bietet eine Menge einfacher Erweiterbarkeit. Der DSL ist Binsor genannt, was du mehr über hier lesen: http: // www. ayende.com/Blog/archive/7268.aspx Aber auch hier ist der beste Ort für infor die Unit-Tests. Dies ist ein Codebeispiel von, was möglich mit binsor:

for type in AllTypesBased of IController("Company.Web.Controller"):
    component type

Diese beiden Linien registrieren jemals geben, dass erbt die IRegler Schnittstelle in den Behälter: D

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top