你不得不知道的 .NET CORE—— Startup 的秘密

我们都知道,在 Main 函数中必须要指定一个 Startup 启动类,但下面的内容鲜为人知。

可以指定多个 Startup

static void Main(string[] args)
{
	WebHost.CreateDefaultBuilder(args)
		.UseStartup<Starup1>()
		.UseStartup<Startup2>()
		.UseStartup<Startup3>()
		//...
}

但结论却是,只有最后一个 Startup 启动类有效。我也是醉了。

如果我们不想指定一个启动类,系统默认会提供使用程序集查找,那查找的约定是怎样的呢?

WebHost.CreateDefaultBuilder(args)
		.UseStartup("程序集1;程序集2;...")

Startup 启动类的环境变量约定

环境变量内置分为三种:DevelopmentStagingProduction,当然你也可以用你自己的。 Core 的内部机制可以会结合你的 环境变量名 + Startup 来帮你找寻相应的启动类

static void Main(string[] args)
{
	WebHost.CreateDefaultBuilder(args)
		.UseStartup("MyApp")
		//...
}

public class DevelopmentStartup
{
	//...
}

public class ProductionStartup
{
	//...
}

当你在开发的时候会使用 DevelopmentStartup 启动类,当你在生产环境的时候就会切换到 ProductionStartup 启动类了。

类名后缀为 Startup 的约定

只要你的启动类的名称结尾是用 Startup 来命名的,都会视为启动类。

public class MyClassStartup {}

实现了 IStartup 接口的类

你的类如果实现了 IStartup 接口,同样也可以被系统找到。

public class MyClass : IStartup { }

如果以上条件不具备,就会抛出异常了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值