昨天躺了一下3.0的依賴注入的雷
今天順勢把AOP做了一下調整,比如自動化的AOP注入
默認的Program里面的CreateHostBuilder方法增加一行
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new JitServiceProviderFactory()) //新增 .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
在Startup里面增加方法
public void ConfigureContainer(JitAopBuilder builder) { builder.Add<IMyClass, MyClass>(ServiceLifetime.Singleton); }
或者
正常的依賴注入
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); //...略略略 services.AddSingleton<IMyClass, MyClass>(); }
默認MyClass上修改一下
[JitInject] public class MyClass: IMyClass { [JitAop] public void Hello() { Console.WriteLine("Hello"); } }
JitInject特性代表這個類需要AOP注入 JitAop方法則代表這個方法的具體AOP攔截流程,要自定義的話,只需要繼承JitAopAttribute類即可
支持同步/異步AOP攔截,彼此的流程獨立
項目鏈接
https://github.com/htrlq/NCoreCoder.Framework