简单探讨一下.NET Core 3.0使用AspectCore的新姿势
前言这几天在对EasyCaching做支持.net core 3.0的调整。期间遇到下面这个错误。
针对这个问题,网上能找到比较多的资料是关于Autofac的,AspectCore的好像比较少。 下面就直接看看简单的处理方法,也在AspectCore上面的Issue回复了。 ServiceProviderFactory的使用在preview3之后, 我们可以通过 具体使用如下: // 要引入这个命名空间 using AspectCore.Extensions.DependencyInjection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) // for aspcectcore .UseServiceProviderFactory(new AspectCoreServiceProviderFactory()) ; } 到这里,我们“系统”级别的配置已经OK。也可以看看 [NonAspect] public class AspectCoreServiceProviderFactory : IServiceProviderFactory<IServiceContainer> { public IServiceContainer CreateBuilder(IServiceCollection services) { return services.ToServiceContainer(); } public IServiceProvider CreateServiceProvider(IServiceContainer containerBuilder) { return containerBuilder.Build(); } } 就实现了 如果有特殊的AspectCore要求,好比实现一个简单的AOP,我们要把代码写那里呢? 下面还有另外一个主角 ConfigureContainer的使用我们只需要在 public class Startup { public void ConfigureServices(IServiceCollection services) { // ... } public void ConfigureContainer(IServiceContainer builder) { // 这里就是熟悉的味道了。。。 builder.Configure(config => { config.Interceptors.AddTyped<xxx>(); }); } public void Configure(IApplicationBuilder app) { // ... } } 可以看到
总结知道这两个地方,加上AspectCore的基本用法,应该就可以在3.0中正常的使用AspectCore了。 其中 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-2 – 使用’class'(或其他保留关键字)作为
- asp.net – DataAnnotation [DataType(DataType.Date)]使我
- 用于学习ASP.Net安全/认证框架的GOOD教程
- asp.net-mvc-4 – IE 10 Windows身份验证中的异步KendoUI上
- 是否可以从ASP.NET Web服务方法手动将HTTP代码40x发送到客户
- asp.net – Orchard CMS Media中的文件大小上传限制
- 将整数格式化为5位数的字符串
- ASP.NET命名空间
- asp.net-core – Microsoft.AspNetCore.NodeServices:无法
- asp.net-mvc – 子文件夹中的控制器