博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Autofac
阅读量:5013 次
发布时间:2019-06-12

本文共 3708 字,大约阅读时间需要 12 分钟。

AutoFac

AutoFac 在系统IOC中占有很大作用,越来越多的项目中使用到AutoFac,但是国内很难看到完整的AutoFac介绍,所以 我打算 通过翻译 AutoFac网站关于AutoFac的介绍、例子、相关扩展等来系统的介绍AutoFac,使更多的人更加了解并能够融会贯通的使用AutoFac。

使用“英文-中文”双语方式。

 

首页:

 

Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps.

Autofac 是一个为.Net 4.5,Silverlight 5(银光),Windows Store apps(Widnows商店应用)和Windows Phone 8 apps(windows手机应用)的令人激动上瘾的IOC容器。

 

Register Components

Build up containers with lambdas, types, or pre-built instances of components. You can also scan assemblies for registrations.

注册组件(组成部分)

使用lambdas,类型,预建组件实例来构建容器。你依然能够通过扫描程序集来注册。

 

var builder = new ContainerBuilder();

// Register individual components//注册单独的组件

builder.RegisterInstance(new TaskRepository)

       .As<ITaskRepository>();

builder.RegisterType<TaskController>();

builder.Register(c => new LogManager(DateTime.Now))

       .As<ILogger>();

// Scan an assembly for components//为组件注册程序集

builder.RegisterAssemblyTypes(myAssembly)

       .Where(t => t.Name.EndsWith("Repository"))

       .AsImplementedInterfaces();

var container = builder.Build();

 

Express Dependencies

Let Autofac inject your constructor parameters for you. It can also handle property and method injection.

表达式依赖

让Auto注入到你的构造器参数。它也能够黑醋栗属性和方法注入。

 

public class TaskController

{

  private ITaskRepository _repository;

  private ILogger _logger;

  // Autofac will automatically find the registered

  // values and pass them in for you.

  public TaskController(

    ITaskRepository repository,

    ILogger logger)

  {

    this._repository = repository;

    this._logger = logger;

  }

}

 

Flexible Module System

Strike a balance between the deployment-time benefits of XML configuration and the power of code with Autofac modules.

灵活的模块化系统

努力实现Xml配置部署的好处与使用Autoface Modules代码的优势的平衡。

 

// Specify complex registrations in code

public class CarTransportModule : Module

{

  public bool ObeySpeedLimit { get; set; }

  protected override void Load(ContainerBuilder builder)

  {

    builder.RegisterType<Car>().As<IVehicle>();

    if (ObeySpeedLimit)

      builder.RegisterType<SaneDriver>().As<IDriver>();

    else

      builder.RegisterType<CrazyDriver>().As<IDriver>();

  }

}

 

<!-- Change deployment-time behavior with XML -->

<autofac>

  <module type="CarTransportModule">

    <properties>

      <property name="ObeySpeedLimit" value="true" />

    </properties>

  </module>

</autofac>

 

Simple Extension Points

Autofac provides activation events to let you know when components are being activated or released, allowing for a lot of customization with little code.

简单的扩展点

Autofac 提供灵活的事件方便你知道组件是在什么时候被激活和被释放的,允许使用较少的代码实现大量的定制化。

 

var builder = new ContainerBuilder();

// Once a listener has been fully constructed and is

// ready to be used, automatically start listening.

builder.RegisterType<Listener>()

       .As<IListener>()

       .OnActivated(e => e.Instance.StartListening());

// When a processor is being constructed but before

// it's ready to be used, call an initialization method.

builder.RegisterType<Processor>()

       .OnActivating(e => e.Instance.Initialize());

var container = builder.Build();

 

Want to download Autofac or learn more? Here's how.

想下载Autofac或者了解更多?从这里开始

 

Download

The easiest way to get Autofac is through NuGet. We can or you can.

下载

最简单的获取Autofac的方式是通过NuGet.我们可以为你或者

 

Learn

If you're new to Autofac, the Quick Start guide is a good place to start. There's also an official documentation site, API documentation, and lots of info on the Autofac wiki. For questions, hit us up on StackOverflow.

学习

如果你是一个Autofac的初学者,是一个好的开始,有,,在A。有问题,在上点击我们。

 

Get Involved

Found an issue? Let us know! Want to help us improve Autofac? Check out the source and our contributor's guide, and drop us a line on the discussion forum!

联系我们

发现了问题?让,想帮助我们改善Autofac?和我们的,在中给我们发信息。

转载于:https://www.cnblogs.com/beixing/p/3912639.html

你可能感兴趣的文章
结对开发之电梯调度最终稿(徐梦迪&刘博)
查看>>
simple java mail
查看>>
信息建模
查看>>
Mybatis 数据库物理分页插件 PageHelper
查看>>
虚函数、纯虚函数详解
查看>>
z-stack中数据的发送,广播、组播、点对点
查看>>
Practial Vim 学习笔记一
查看>>
.NET中使用js实现百度搜索下拉提示效果[不是局部刷新,呜呜。。]
查看>>
ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
查看>>
关于二维码“QR”的6大注意事项
查看>>
MySQL - 常用命令及常用查询SQL
查看>>
C# .NET MVC 接收 JSON ,POST,WCF 无缝隙切换
查看>>
android获取USB设备的名称
查看>>
JavaPersistenceWithHibernate第二版笔记-第七章-005排序的集合(@org.hibernate.annotations.SortComparator)...
查看>>
ue4同c#通信时的中文乱码问题
查看>>
黄老师架构师课程笔记(二)
查看>>
mvc性能优化
查看>>
log
查看>>
663 如何做“低端”产品?(如何把低端做得高端 - 认同感)
查看>>
JDBC 第九课 —— 初次接触 JUnit
查看>>