[Asp.Net Core]NET5_Autofac控制器属性注入

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]NET5_Autofac控制器属性注入相关的知识,希望对你有一定的参考价值。

控制器是一个类,控制器的实例其实是IControllerActivator来创建的;

1.得让控制器使用容器来获取实例;

#region 指定控制器实例让容器来创建
services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
#endregion

2.注册控制器抽象和具体的关系

var controllersTypesInAssembly = typeof(Startup).Assembly.GetExportedTypes()
             .Where(type => typeof(ControllerBase).IsAssignableFrom(type)).ToArray();
builder.RegisterTypes(controllersTypesInAssembly).PropertiesAutowired(new AutowiredPropertySelector());
`
# 3.在控制器内定义属性

```csharp
        #region 属性注入
        [CustomPropertyAttribute]
        private ITestServiceA iTestServiceAA  get; set; 
        private ITestServiceB iTestServiceBB  get; set; 
        private ITestServiceC iTestServiceCC  get; set; 
        private ITestServiceD iTestServiceDD  get; set; 
        private ITestServiceE iTestServiceEE  get; set; 
        #endregion

4.扩展,自己控制究竟哪些属性需要做依赖注入

namespace DeZai.Net5Demo.Utility.AutofacExtension

    [AttributeUsage(AttributeTargets.Property)]
    public class CustomPropertyAttribute:Attribute
    
    

namespace DeZai.Net5Demo.Utility.AutofacExtension

    public class CustomPropertySelector : IPropertySelector
    
        public bool InjectProperty(PropertyInfo propertyInfo, object instance)
        
            //需要一个判断的维度;
            return propertyInfo.CustomAttributes.Any(it => it.AttributeType == typeof(CustomPropertyAttribute));
        
    

以上是关于[Asp.Net Core]NET5_Autofac控制器属性注入的主要内容,如果未能解决你的问题,请参考以下文章

Asp.NET Core进阶 第四篇 Asp.Net Core Blazor框架

.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介

asp.net core 注入后仍然报错?

深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的

.Net Core 学习 - ASP.NET Core 概念学习

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门