.NET Core 依赖注入改造(附1)- Autowired

.NET Core 依赖注入改造(1)- 命名服务
.NET Core 依赖注入改造(2)- 委托转换
.NET Core 依赖注入改造(3)- ILogger
.NET Core 依赖注入改造(4)- ActivatorUtilities
.NET Core 依赖注入改造(5)- Context

.NET Core 依赖注入改造(附1)- Autowired

一、

今天有小伙伴问我,之前的一些改造怎么用在实际项目中。


好吧。。。
那就来一个让Controller支持Autowired

二、

先在nuget中安装blqw.DI.ExtensionMethods

blqw.DI.ExtensionMethods

自定义 IControllerActivator 实例;
为了方便,直接继承系统的DefaultControllerActivator

class MyControllerActivator : DefaultControllerActivator
{
    public MyControllerActivator(ITypeActivatorCache typeActivatorCache) 
        : base(typeActivatorCache) { }

    public override object Create(ControllerContext controllerContext)
    {
        var controller = base.Create(controllerContext);
        controllerContext.HttpContext.RequestServices.Autowired(controller);
        return controller;
    }
}

四、

ConfigureServices中注册MyControllerActivator

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddSingleton(typeof(IControllerActivator), typeof(MyControllerActivator));
}

五、

测试一下


嗯有了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容