昨天躺了一下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