AutoFac在.NET中的应用原理和优势有哪些具体体现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计494个文字,预计阅读时间需要2分钟。
AutoFac 是 .NET 程序中一个非常灵活且易用的强大 DI 框架。下面简单介绍其使用方法。
安装:Install-Package Autofac
简单示例:csharpstatic void Main(string[] args){ var builder=new ContainerBuilder(); builder.RegisterType().As(); var container=builder.Build(); var service=container.Resolve(); // 使用 service...}
AutoFac是.net程序下一个非常灵活易用,且功能强大的DI框架,本文这里简单的介绍一下使用方法。
安装:
Install-Package Autofac
简单的示例:
static void Main(string[] args) { var builder = new ContainerBuilder(); builder.RegisterType<ConsoleLogger>().As<ILogger>(); var container = builder.Build(); var logger = container.Resolve<ILogger>(); }
简单的说,AutoFac包括如下两步:
- 通过 ContainerBuilder.RegisterXXX注册服务
- 通过Container.Resolve获取服务
如果有某一接口服务有多个实现,可以用如下方式获取所有服务。
var loggers = container.Resolve<ILogger[]>();
程序集扫描注册服务
我们也可以通过反射的方式扫描程序集,从而实现自动注册。
var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces();
虽然做法粗暴,但在一些简单的场景下还是非常快速有效的。
MEF
我之前介绍过.net framework下自带的MEF框架,它和autofac的思路还是大不相同的。
AutoFac偏向于服务的抽象,无注入,简洁,透明而且不失强大。
MEF则采用反射的方式,服务的提供由代码注入自动完成,更加自动化,但不够透明,它更侧重于解决一组模块间的互相依赖,耦合关系。它用来拆分用它来分析复杂的UI模块,或者构建插件是非常方便的。
参考文档:
AutoFac本身功能非常强大,这里只是一个简单的入门,更多功能可以参考官方文档。
到此这篇关于AutoFac框架的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计494个文字,预计阅读时间需要2分钟。
AutoFac 是 .NET 程序中一个非常灵活且易用的强大 DI 框架。下面简单介绍其使用方法。
安装:Install-Package Autofac
简单示例:csharpstatic void Main(string[] args){ var builder=new ContainerBuilder(); builder.RegisterType().As(); var container=builder.Build(); var service=container.Resolve(); // 使用 service...}
AutoFac是.net程序下一个非常灵活易用,且功能强大的DI框架,本文这里简单的介绍一下使用方法。
安装:
Install-Package Autofac
简单的示例:
static void Main(string[] args) { var builder = new ContainerBuilder(); builder.RegisterType<ConsoleLogger>().As<ILogger>(); var container = builder.Build(); var logger = container.Resolve<ILogger>(); }
简单的说,AutoFac包括如下两步:
- 通过 ContainerBuilder.RegisterXXX注册服务
- 通过Container.Resolve获取服务
如果有某一接口服务有多个实现,可以用如下方式获取所有服务。
var loggers = container.Resolve<ILogger[]>();
程序集扫描注册服务
我们也可以通过反射的方式扫描程序集,从而实现自动注册。
var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces();
虽然做法粗暴,但在一些简单的场景下还是非常快速有效的。
MEF
我之前介绍过.net framework下自带的MEF框架,它和autofac的思路还是大不相同的。
AutoFac偏向于服务的抽象,无注入,简洁,透明而且不失强大。
MEF则采用反射的方式,服务的提供由代码注入自动完成,更加自动化,但不够透明,它更侧重于解决一组模块间的互相依赖,耦合关系。它用来拆分用它来分析复杂的UI模块,或者构建插件是非常方便的。
参考文档:
AutoFac本身功能非常强大,这里只是一个简单的入门,更多功能可以参考官方文档。
到此这篇关于AutoFac框架的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

