DI Autofac 中的 RegisterInstance 和 RegisterType 有什么区别

dim*_*its 4 .net c# dependency-injection autofac asp.net-web-api2

我是 Autofac 的新手,我试图了解 Web api 2(.Net 框架)中 RegisterInstance 和 RegisterType 之间的区别。在他的文档中有一个简单的 例子

var builder = new ContainerBuilder();


// Register individual components
builder.RegisterInstance(new TaskRepository())
       .As<ITaskRepository>();
builder.RegisterType<TaskController>();
builder.Register(c => new LogManager(DateTime.Now))
       .As<ILogger>();

// Scan an assembly for components
builder.RegisterAssemblyTypes(myAssembly)
       .Where(t => t.Name.EndsWith("Repository"))
       .AsImplementedInterfaces();

var container = builder.Build();
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

Eup*_*ric 6

RegisterInstance 注册一个实例,然后将其用作单例。

RegisterType 将创建和生命周期留给容器。默认值通常是按请求创建。