微软提供了类库:
using Microsoft.AspNetCore.Hosting;
IHostingStartup
using Cbf.Users.ServiceInstance.Extend;
using Microsoft.AspNetCore.Hosting;
using System;
[assembly: HostingStartup(typeof(FirstExtend))]
namespace Cbf.Users.ServiceInstance.Extend
{
/// <summary>
/// 在程序最早执行的,他是一个无侵入式的设计
/// </summary>
public class FirstExtend : IHostingStartup
{
/// <summary>
/// 在program类之后执行,在startup前执行
/// </summary>
/// <param name="builder"></param>
public void Configure(IWebHostBuilder builder)
{
//出来的特别早
Console.WriteLine("很早执行");
}
}
}
例如:skywalking源码内就是使用了这种设计模式实现了无侵入式

也可以适用于很多场景