Autofac | AspectCore 框架
文章平均质量分 62
Autofac 是一款超赞的.NET IoC 容器 . 它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改 . 它的实现方式是将常规的.net类当做 组件 处理.
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
如何将 Autofac 整合进 Net6.0 Core MVC 项目中
Asp.Net Core Mvc,我也用了很长一段时间了,它现在的编程模型和方式还是特别棒的,都是组件开发,什么都可以替换,当然了,您别抬杠,有些还是不能替换的。自从我们进入了跨平台开发的时代,IOC容器也成了一个不可或缺的东西了。微软为我们提供了一个默认实现,那就是,当时我们可以替换掉它,今天我就试试,替换一下,把我的一些经验也写出来,以防以后忘记,不知道去哪里找了。当然了,这个不是很难,也希望高手不要见笑,对于我来说,好记性不如烂笔头,好的东西我就记录下来,有使用的地方,可以直接来找。转载 2023-08-31 14:57:31 · 306 阅读 · 0 评论 -
.Net6 Web Core API --- Autofac -- AOP
/// 自定义 方法拦截器 ///转载 2023-08-23 15:22:12 · 344 阅读 · 0 评论 -
Autofac一个优秀的.NET IoC框架
1 前置阅读在阅读本文章之前,你可以先阅读:什么是依赖注入2 简介Autofac与C#语言的结合非常紧密,并学习它非常的简单,也是.NET领域最为流行的IoC框架之一。3 使用首先,将Autofac的NuGet软件包安装到您的应用程序中。Autofac然后,我们通过创建ContainerBuilder来注册组件。var builder = new ContainerBuilder();builder.RegisterType<Knife>();builder.Regi转载 2022-04-28 18:28:43 · 393 阅读 · 0 评论 -
Autofac 思维导图
Autofac类图转载 2022-03-09 22:59:57 · 221 阅读 · 0 评论 -
.NET 5中 Autofac 的使用
DI 依赖注入、IOC 控制反转以及 AOP 切面编程Autofac 容器Autofac 是一款.NET IoC 容器 . 它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改 . 它的实现方式是将常规的.net类当做 组件 处理.安装 NuGet 程序包: Autofac 6.0.0创建一个 ContainerBuiler注册接口和实现关系通过 ContainerBuiler 的 Build 方法,得到 IContainer 容器通过 IContainer 容转载 2022-02-09 00:30:42 · 1462 阅读 · 0 评论 -
.Net Core3.1下使用Autofac实现依赖注入
前言Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个。它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成。主要优点如下(此段描述为转载):它是C#语言联系很紧密,也就是说C#里的很多编程方式都可以为Autofac使用,例如可以用Lambda表达式注册组件较低的学习曲线,学习它非常的简单,只要你理解了IoC和DI的概念以及在何时需要使用它们XML配置支持自动装配微软的Orchad开源程序使用的就是Autofac,从该源码可以看出转载 2021-06-27 00:32:30 · 1633 阅读 · 1 评论 -
.net core 3.1 使用autofac注入(一)
.net core 2和3 使用autofac注入方式不一样,此文章是针对.net core 3.1首先安装 Autofac.Extensions.DependencyInjection然后在Program.cs 新增一行代码然后在Startup.cs 增加方法注:业务逻辑层每个类都以Service结尾ConfigureServices 和 Configure 都不需要更改到这里就配置好了,下面添加测试用例,直接截图代码:注:控制器中要注入Test接口添加好代码,直接运行.转载 2021-04-09 18:20:39 · 713 阅读 · 1 评论 -
Autofac基础知识学习
Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个。Autofac官网Autofac’s documentation在介绍Autofac前,我们需要了解几个重要的概念,DIP,DI,IOC,IOC容器前言DIP、IOC、DI、IOC容器依赖倒置原则 DIP(Dependency Inversion Principle):一种软件架构设计原则(抽象概念)。高层模块不应依赖于低层模块,两者应该依赖于抽象。抽象不应该依赖于实现,实现应该依赖于抽象。控制反转 IoC(转载 2021-04-09 18:11:09 · 840 阅读 · 0 评论 -
AspectContext上下文
using System;using System.Collections.Generic;using System.Reflection;using System.Threading.Tasks;namespace AspectCore.DynamicProxy{ [NonAspect] public abstract class AspectContext { public abstract IDictionary<string, object转载 2021-01-18 13:22:17 · 608 阅读 · 0 评论 -
AspectCore入门
安装依赖Install-Package AspectCore.Extensions.DependencyInjection定义特性类使用抽象的 AbstractInterceptorAttribute 自定义特性类(该类实现了 IInterceptor 接口)。AspectCore默认实现了基于 Attribute 的拦截器配置,自定义的拦截器如下:public class CustomInterceptorAttribute : AbstractInterceptorAttribute {转载 2021-01-17 14:25:31 · 2170 阅读 · 1 评论 -
Autofac类图
AutofacAutofac类图转载 2019-12-23 16:15:53 · 261 阅读 · 0 评论 -
Autofac全面解析系列(版本:3.5)–[依赖注入]
前言autofacAutofac是一套高效的依赖注入框架。Autofac官方网站:http://autofac.org/Autofac在Github上的开源项目:https://github.com/autofac/AutofacAutofac安装:通过VS的Nuget可以很方便的获取。依赖注入依赖注入,这个专业词我们可以分为两个部分来理解:依赖,也就是UML中描转载 2018-01-03 00:22:25 · 1568 阅读 · 0 评论 -
Autofac官方文档(七)【解析服务】
在将组件注册到适当的服务之后,您可以从构建的容器和子生命周期范围解析服务。 您可以使用Resolve()方法执行此操作:var builder = new ContainerBuilder();builder.RegisterType<MyComponent>().As<IService>();var container = builder.Build();using(var scope = c翻译 2017-12-08 11:05:35 · 1114 阅读 · 0 评论 -
Autofac官方文档(二十四)【应用集成之Web Forms】
ASP.NET Web表单集成需要Autofac.Web NuGet包。Web表单集成为code-behind类提供了依赖注入集成。 它也增加了每个请求生命周期的支持。本页面介绍了ASP.NET经典的Web表单集成。 如果您正在使用ASP.NET Core,请参阅ASP.NET Core集成页面。 Quick Start Add Modules to Web.config Im翻译 2017-12-17 10:32:35 · 1497 阅读 · 0 评论 -
Autofac官方文档(六)【注册组件之程序集扫描】
Autofac可以使用约定来查找和注册程序集中的组件。 您可以扫描并注册各种类型,也可以专门扫描Autofac模块。扫描类型否则称为惯例驱动的注册或扫描,Autofac可以根据用户指定的规则从程序集中注册一组类型:var dataAccess = Assembly.GetExecutingAssembly();builder.RegisterAssemblyTypes(dataAccess)翻译 2017-12-07 22:46:35 · 3683 阅读 · 0 评论 -
Autofac官方文档(五)【注册组件之属性和方法注入】
虽然构造函数参数注入是将值传递给正在构造的组件的首选方法,但您也可以使用属性或方法注入来提供值。属性注入使用可写属性而不是构造函数参数来执行注入。方法注入通过调用一个方法来设置依赖关系。属性注入如果组件是一个lambda表达式组件,请使用对象初始值设定项:builder.Register(c => new A { B = c.Resolve<B>() });要支持循环依赖性,请使用激活的事件处理程序翻译 2017-12-07 21:49:34 · 969 阅读 · 0 评论 -
Autofac官方文档(二十三)【应用集成之Web API】
Web API 2集成需要Autofac.WebApi2 NuGet包。Web API集成需要Autofac.WebApi NuGet包。Web API集成为控制器,模型绑定器和操作过滤器提供了依赖注入集成。 它也增加了每个请求生命周期的支持。本页面介绍了ASP.NET经典的Web API集成。 如果您正在使用ASP.NET Core,请参阅ASP.NET Core集成页面。 Quick St翻译 2017-12-16 23:33:12 · 3668 阅读 · 0 评论 -
Autofac官方文档(四)【注册组件之将参数传递给注册者】
在注册组件时,您可以提供一组参数,这些参数可以在解决基于该组件的服务时使用。(如果您希望在解析时提供参数,则可以改为执行此操作。)可用的参数类型Autofac提供了几种不同的参数匹配策略:NamedParameter - 按名称匹配目标参数TypedParameter - 按类型匹配目标参数(需要完全类型匹配)ResolvedParameter - 灵活的参数匹配NamedParameter翻译 2017-12-07 17:23:55 · 1371 阅读 · 0 评论 -
Autofac官方文档(三)【注册组件之注册概念】
通过创建一个ContainerBuilder并通知构建器哪些组件暴露哪些服务,您可以使用Autofac注册组件。组件可以通过反射(通过注册一个特定的.NET类型或打开通用)来创建; 通过提供一个现成的实例(一个你创建的对象的实例); 或者通过lambda表达式(一个执行实例化对象的匿名函数)。 ContainerBuilder有一系列的Register()方法,允许你设置它们。每个组件都暴露一个或多翻译 2017-12-07 17:07:58 · 2304 阅读 · 0 评论 -
Autofac官方文档(二十二)【应用集成之MVC】
Autofac始终保持最新,以支持最新版本的ASP.NET MVC,所以文档也保持最新。 一般而言,各个版本的集成保持相当一致。MVC集成需要Autofac.Mvc5 NuGet包。MVC集成为控制器,模型绑定器,操作过滤器和视图提供了依赖注入集成。 它也增加了每个请求生命周期的支持。本页解释了ASP.NET经典MVC集成。 如果您正在使用ASP.NET Core,请参阅ASP.NET Core集成翻译 2017-12-15 23:25:34 · 4114 阅读 · 0 评论 -
Autofac官方文档(十一)【使用生命周期范围】
创建一个新的生命周期范围您可以通过在任何现有生命周期作用域上从根容器开始调用BeginLifetimeScope()方法来创建生命周期作用域。生命周期作用域是可销毁的,他们跟踪组件的处置,所以确保你总是调用“Dispose()”或者把它们包装在“using”语句中。using(var scope = container.BeginLifetimeScope()){ //从作为根容器子项的作用域翻译 2017-12-12 21:42:26 · 2451 阅读 · 0 评论 -
Autofac官方文档(十)【控制作用域和生命周期】
Nick Blumhardt的Autofac终身入门书是开始学习Autofac生命周期的好地方。然而,还有很多需要消化的东西,还有很多混杂的概念,所以我们将在这里补充这篇文章。您可能会从注册主题中想起将组件添加到实现服务的容器。然后您最终解析服务并使用这些服务实例来完成您的工作。服务的生命周期是服务实例在您的应用程序中生存的时间 - 从原始实例到处置。例如,如果你“新建”了一个实现了IDisposa翻译 2017-12-12 21:18:59 · 1459 阅读 · 0 评论 -
Autofac官方文档(九)【解析服务之隐式关系类型】
Autofac支持隐式自动解析特定类型,以支持组件和服务之间的特殊关系。要充分利用这些关系,只需简单地注册组件即可,但是在使用组件中更改构造函数参数或在Resolve()调用中解析类型,以便使用指定的关系类型。例如,当Autofac注入IEnumerable<ITask>类型的构造函数参数时,它将不会查找提供IEnumerable <ITask>的组件。相反,容器会找到ITask的所有实现并注入所有翻译 2017-12-12 17:27:59 · 978 阅读 · 0 评论 -
Autofac官方文档(八)【解析服务之传递参数来解析】
当需要解析服务时,您可能会发现需要将参数传递给解析。(如果您在注册时知道这些值,则可以在注册时提供这些值。)Resolve()方法使用可变长度参数列表接受注册时可用的相同参数类型。或者,委托工厂和Func 隐式关系类型也允许在解析过程中传递参数。 可用的参数类型Autofac提供了几种不同的参数匹配策略:NamedParameter - 按名称匹配目标参数TypedParameter - 按类翻译 2017-12-08 13:16:21 · 2289 阅读 · 0 评论 -
Autofac官方文档(二)【新版本】
Autofac和集成软件包的发行说明Core components AutofacAutofac.ConfigurationIntegration librariesASP.NETWeb FormsMVCWeb APISignalRRIA/Domain ServicesOWIN OWIN CoreOWIN / Web APIOWIN / MVCWCFMEFCommon翻译 2017-11-29 13:50:00 · 2141 阅读 · 0 评论 -
Autofac官方文档(一)【开始】
将Autofac集成到您的应用程序的基本模式是: 记住控制反转(IoC)的结构。 添加Autofac引用。 在应用程序启动... 创建一个ContainerBuilder。 注册组件。 构建容器并将其存储以备后用。 在执行应用程序时 从容器创建一个生命周期范围。 使用生命周期作用域来解析组件的实例。本入门指南将引导您完成简单的控制台应用程序的这些步骤。 一旦您掌握了基本知识,您可以翻译 2017-11-29 13:34:00 · 6542 阅读 · 0 评论 -
IoC容器Autofac使用入门(一)
可以通过Nuget包管理器下载Autofac,添加引用Program.cs的代码如下: class Program { private static void Main(string[] args) { var builder = new ContainerBuilder(); //这里通过Con原创 2016-08-12 15:39:40 · 4043 阅读 · 0 评论 -
IoC容器Autofac使用入门(二)
Autofac的ServiceLocator模式应用,无配置Program.cs代码如下: public class Program { static void Main(string[] args) { //初始化 IocInitialize iocini = new IocInitialize(原创 2016-08-13 00:04:23 · 3647 阅读 · 1 评论 -
Autofac官方文档(十二)【实例范围】
实例范围决定了如何在同一服务的请求之间共享实例。 请注意,您应该熟悉生命周期范围的概念,以更好地理解这里发生的事情。当对一个服务进行请求时,Autofac可以返回一个实例(单个实例作用域),一个新实例(每个依赖作用域)或单个实例带某种上下文。 一个线程或一个HTTP请求(每个生命周期范围)。这适用于从显式Resolve()调用返回的实例以及容器内部创建的实例,以满足另一个组件的依赖关系。 注意翻译 2017-12-13 13:10:46 · 1024 阅读 · 0 评论 -
Autofac官方文档(十三)【捕获依赖】
捕获依赖当一个要生存很短时间的组件被一个长期存在的组件持有时,就会发生“captive dependency”。 Mark Seemann的这篇博客文章在解释这个概念方面做得很好。Autofac不一定会阻止你创建捕获依赖关系。由于捕获的设置方式,您可能会发现解决方案异常的时候,但您并不总是如此。停止捕获依赖是开发者的责任。一般规则避免捕获依赖的一般规则:消费组件的生命周期应该小于或等于所消费的服务的翻译 2017-12-14 11:13:23 · 737 阅读 · 0 评论 -
Autofac官方文档(二十一)【应用集成之OWIN】
OWIN全称Open Web Interface for .NET(.NET的开放式Web接口),是一种更简单的模型,用于(在不将应用程序绑定到Web服务器的情况下)编写基于Web的应用程序。为此,使用“中间件”的概念来创建请求所经过的管道。由于OWIN处理应用程序管道(检测请求何时开始/结束等)的方式的差异,将Autofac集成到OWIN应用程序中与将其集成到更多“标准”ASP.NET应用程序的方翻译 2017-12-15 10:39:12 · 1485 阅读 · 0 评论 -
Autofac官方文档(二十)【应用集成】
ASP.NET OWIN Quick Start Dependency Injection in Middleware Controlling Middleware Order Example MVC Quick Start翻译 2017-12-14 23:22:13 · 1004 阅读 · 0 评论 -
Autofac官方文档(十九)【模块】
介绍IoC使用组件作为应用程序的基本构建块。提供对组件的构造函数参数和属性的访问通常被用作实现部署时配置的手段。这通常是一个可疑的做法,原因如下:构造函数可以改变:对构造函数签名或组件属性的更改可能会中断部署的App.config文件 - 这些问题在开发过程中可能会出现很晚。JSON/XML难以维护:大量组件的配置文件可能难以维护。“代码”开始在配置中显示:暴露类的属性和构造函数参数是对应用程翻译 2017-12-14 23:21:07 · 2054 阅读 · 0 评论 -
Autofac官方文档(十八)【JSON/XML 配置】
大多数IoC容器提供编程接口以及基于JSON/XML文件的配置支持,Autofac也不例外。Autofac鼓励通过ContainerBuilder类进行编程配置。使用编程接口是容器设计的核心。 如果在编译时无法选择或配置具体类,则建议使用JSON或XML。在深入研究JSON/XML配置之前,一定要阅读模块 - 这解释了如何处理比基本的JSON/XML组件注册所允许的更复杂的场景。 JSON/XML中翻译 2017-12-14 22:45:32 · 3195 阅读 · 0 评论 -
Autofac官方文档(十七)【配置】
JSON/XML Configuration Configuring With Microsoft Configuration (4.0+) Quick Start Default Assembly Components Modules Type Names翻译 2017-12-14 16:45:29 · 1128 阅读 · 0 评论 -
Autofac官方文档(十六)【在启动时运行代码】
Autofac提供了在构建容器时通知组件或自动激活组件的功能。有三种自动激活机制可用: - 可启动组件 - 自动激活组件 - 容器构建回调在所有情况下,当容器建成时,组件将被激活。可启动的组件一个可启动的组件是容器在最初构建时被容器激活的组件,并且有一个特定的方法被调用来引导组件上的一个动作。关键是要实现Autofac.IStartable接口。在构建容器时,组件将被激活,并调用IStartable翻译 2017-12-14 16:44:30 · 1134 阅读 · 0 评论 -
Autofac官方文档(十五)【生命周期事件】
Autofac公开了在实例生命周期的不同阶段可能被挂钩的事件。 这些在组件注册期间被订阅(或者通过附加到IComponentRegistration接口。) OnActivating OnActivated OnReleaseOnActivatingOnActivating事件在使用组件之前引发。 在这里你可以:将实例切换为另一个或将其包装在代理中做属性注入或方法注入执行翻译 2017-12-14 16:42:33 · 773 阅读 · 0 评论 -
Autofac官方文档(十四)【销毁】
在工作单元内获得的资源(数据库连接,事务,认证会话,文件句柄等)应在工作完成时销毁。 .NET提供了IDisposable接口来帮助销毁这个更确定的概念。一些IoC容器需要通过像ReleaseInstance()这样的方法明确地告诉销毁特定的实例。 这使得很难保证使用正确的销毁语义。从不可销毁部件切换到可销毁部件可能意味着修改客户端代码。客户端代码在使用共享实例时可能会忽略销毁,但切换到非共享实翻译 2017-12-14 16:27:14 · 929 阅读 · 0 评论 -
IoC容器Autofac使用入门(三)
通过配置文件实现对象的创建Program.cs的代码如下:public class Program { /// ///获取或设置容器 /// private static IContainer Container { get; set; } /// /// 定义应用程序的原创 2016-08-13 22:43:01 · 4518 阅读 · 1 评论