我一直在寻找使用XmlConfiguration在autofac中注册工厂类的方法,但文档看起来有点苗条。使用web.config在Autofac中注册工厂类
我想做到的是做到以下几点在我的配置,而不是:
builder.Register(c => MyFactory.GetMyObject()).As<IMyObject>();
是否有这样做的什么好的办法?
我一直在寻找使用XmlConfiguration在autofac中注册工厂类的方法,但文档看起来有点苗条。使用web.config在Autofac中注册工厂类
我想做到的是做到以下几点在我的配置,而不是:
builder.Register(c => MyFactory.GetMyObject()).As<IMyObject>();
是否有这样做的什么好的办法?
这样做的方法是将您的注册封装到可从XML注册的Autofac模块中。 (模块描述如下:http://code.google.com/p/autofac/wiki/StructuringWithModules)
你的模块看起来是这样的:
public class MyModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register(c => MyFactory.GetMyObject()).As<IMyObject>();
}
}
和XML进行注册:
<module type="MyModule" />
Autofac最初是为从代码配置,甚至是自动布线而构建的。
也许你正在寻找的是类似Spring.NET或Castle。这两个框架最初是为了从XML配置,甚至是自动配置而构建的。
从代码处理注册似乎对使用web.config有一些优点,因为通过这种方式处理复杂的依赖关系似乎更容易。
当我看到下面的例子时,唯一担心的是所有注册都是在Global.asax中完成的。不过,通过向单独的程序集分发注册,这很容易解决。