我正在通过多个站点的视频学习ASP.NET核心。视频中的同伴告诉我,可以通过在Startup.ConfigureServices中注册,将“服务”添加为单例或瞬态。
public class Startup {
public Startup() {
}
public IConfiguration Configuration { get; set; }
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services) {
// Register the Greeter as an IGreeter and have the ASP.NET framework register it to be available to anyone who wants an IGreeter
// Dependency injection?
services.AddSingleton<IGreeter, Greeter>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IGreeter greeter) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}
app.Run(async (context) => {
var greeting = greeter.GetGreeting();
await context.Response.WriteAsync(greeting);
});
}
}
他不清楚是谁在实例化它,它的寿命是什么,以及它在哪里可用。有人可以帮我填写这些详细信息吗?
这是否可以像使用依赖注入框架(如Autofac)那样完成,但是内置了ASP.NET Core?还是不同?
答案 0 :(得分:1)
谁在实例化它,它的生存期是什么,它在哪里 可用。
框架将使用在DI容器中注册服务时指定的生存期来实例化服务。从包含DI容器的主项目引用的项目中,所有注册服务都可用。
这是我所做的依赖项注入所要做的吗 框架(例如Autofac),但内置了ASP.NET Core?还是这个 不一样?
一切与其他DI容器(如AutoFac
)相同。 DI是使用ASP.NET Core内置的称为 Microsoft.Extensions.DependencyInjection