Autofac创建对象的三种方式:
- 反射
- 已创建的一个对象实例
- lanmbda表达式(一个执行实例化对象的匿名方法)
ContainerBuilder
包含一组Register方法来实现以上操作。
// Create the builder with which components/services are registered.
var builder = new ContainerBuilder();
// Register types that expose interfaces...
builder.RegisterType<ConsoleLogger>().As<ILogger>();
// Register instances of objects you create...
var output = new StringWriter();
builder.RegisterInstance(output).As<TextWriter>();
// Register expressions that execute to create objects...
builder.Register(c => new ConfigReader("mysection")).As<IConfigReader>();
// Build the container to finalize registrations
// and prepare for object resolution.
var container = builder.Build();
// Now you can resolve services using Autofac. For example,
// this line will execute the lambda expression registered
// to the IConfigReader service.
using(var scope = container.BeginLifetimeScope())
{
var reader = scope.Resolve<IConfigReader>();
}
反射
通常用RegisterType
来注册
var builder = new ContainerBuilder();
builder.RegisterType<ConsoleLogger>();
builder.RegisterType(typeof(ConfigReader<