[Asp.Net Core]NET5_Autofac控制器属性注入
Posted 厦门德仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]NET5_Autofac控制器属性注入相关的知识,希望对你有一定的参考价值。
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简介
深入研究 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 入门