2009-07-02 8 views
3

Ich habe nach einer Möglichkeit gesucht, eine Fabrikklasse in Autofac mit XmlConfiguration zu registrieren, aber die Dokumentation scheint ein bisschen dünn.Registrieren Sie Fabrikklasse in Autofac mit web.config

Was will ich erreichen, ist die folgende in meiner Konfiguration zu tun statt:

builder.Register(c => MyFactory.GetMyObject()).As<IMyObject>();

Gibt es eine gute Möglichkeit, dies zu tun?

Antwort

3

Die Vorgehensweise besteht darin, Ihre Registrierung in ein Autofac-Modul zu kapseln, das aus XML registriert werden kann. (Module werden hier beschrieben: http://code.google.com/p/autofac/wiki/StructuringWithModules)

Ihr Modul würde wie etwas aussehen:

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
    builder.Register(c => MyFactory.GetMyObject()).As<IMyObject>(); 
    } 
} 

Und die XML es registrieren:

<module type="MyModule" /> 
0

Autofac wurde ursprünglich für die Konfiguration, sogar Autowired, aus Code erstellt.

Vielleicht, was Sie suchen, ist etwas wie Spring.NET oder Castle. Diese beiden Frameworks wurden ursprünglich so erstellt, dass sie aus XML selbst konfiguriert, sogar auto- wirt werden können.

0

Die Handhabung der Registrierung von Code scheint einige Vorteile bei der Verwendung von web.config zu haben, da es einfacher scheint, komplexe Abhängigkeiten auf diese Weise zu behandeln.

Die einzige Sorge, die ich hatte, wenn ich den Beispielen folgte, die ich finden konnte, war, dass die ganze Registrierung in Global.asax gemacht wurde. Dies ist jedoch sehr einfach zu beheben, indem die Registrierung in eine separate Assembly aufgeteilt wird.

Verwandte Themen