.Net Core 3.0下AOP试水~~
昨天躺了一下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