【发布时间】:2020-09-02 20:20:08
【问题描述】:
这是在我的控制台应用程序中使用依赖注入的启动类的正确方法吗?另外,就事件的顺序而言,我不明白为什么 App Constructor Method 在 Startup Constructor Method 之前运行。
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace ConsoleApp1
{
class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
ActivatorUtilities.CreateInstance<Startup>(host.Services);
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddTransient<App>();
});
}
public class Startup
{
public Startup(App app)
{
Console.WriteLine("Startup Constructor Method");
app.Run();
}
public void Run()
{
Console.WriteLine("Startup Run Method");
}
}
public class App
{
public App()
{
Console.WriteLine("App Constructor Method");
}
public void Run()
{
Console.WriteLine("App Run Method");
}
}
}
【问题讨论】:
-
我不明白为什么 App Constructor Method 在 Startup Constructor Method 之前运行 - 您的 Startup 构造函数接收 App 的实例,因此 App 构造函数必须运行才能创建实例
标签: c# asp.net-core dependency-injection