首页 > 其他分享 >Autofac 解释第一个例子 《第一篇》

Autofac 解释第一个例子 《第一篇》

时间:2024-10-29 10:50:19浏览次数:5  
标签:Autofac 第一篇 void Say 例子 IPerson 组件 public

Autofac 解释第一个例子 《第一篇》

 

Autofac是一个轻量级的依赖注入的框架,同类型的框架还有Spring.NET,Unity,Castle等。

  Autofac的使用有一个非常让人郁闷的地方,就是服务器要求安装有Microsoft .NET Framework 4 KB2468871。该补丁的地址是:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=3556 如果不安装,则运行程序会报如下错误:

  

  具体信息可以到这里去查看:https://code.google.com/p/autofac/wiki/FrequentlyAskedQuestions

  这篇文章以一个最简单的例子,开始Autofac的学习:

复制代码 复制代码
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            ContainerBuilder builder = new ContainerBuilder();
            builder.RegisterType<AutoFacManager>();
            builder.RegisterType<Worker>().As<IPerson>();
            using (IContainer container = builder.Build())
            {
                AutoFacManager manager = container.Resolve<AutoFacManager>();
                manager.Say();
            } 

            Console.ReadKey();
        }
    }

    public interface IPerson
    {
        void Say();
    }

    public class Worker : IPerson
    {
        public void Say()
        {
            Console.WriteLine("我是一个工人!");
        }
    }

    public class Student : IPerson
    {
        public void Say()
        {
            Console.WriteLine("我是一个学生!");
        }
    }

    public class AutoFacManager
    {
        IPerson person;

        public AutoFacManager(IPerson MyPerson)
        {
            person = MyPerson;
        }

        public void Say()
        {
            person.Say();
        }
    }
}
复制代码 复制代码

  以上例子,是一个最简单的例子,输出如下:

  

  简单解释:

  1、ContainerBuilder类型的作用

    组件通过ContainerBuilder的对象注册。  

  2、组件

    对象需要从组件中来获取,比如例子中的Worker类的实例就需要从组件中获取。

  3、哪些实例可以作为组件

  • Lambda表达式
  • 一个类型
  • 一个预编译的实例
  • 实例类型所在的程序集

  4、容器

    ContainerBuilder的Build()方法可以创建容易,从容器的Resolve()方法能够获得对象。

  5、为了指定组件服务是某一接口

    As()方法将用于注册时之指定:builder.RegisterTye<TaskController>().As<TController>(); 
  6、组件的依赖关系

    组件的依赖关系主要通过接口实现,如Worker:IPerson

标签:Autofac,第一篇,void,Say,例子,IPerson,组件,public
From: https://www.cnblogs.com/sexintercourse/p/18512468

相关文章

  • Autofac 组件、服务、自动装配 《第二篇》
    Autofac组件、服务、自动装配《第二篇》 一、组件创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式:1、类型创建RegisterTypeAutoFac能够通过反射检查一个类型,选择一个合适的构造函数,创造这个对象的实例。......
  • 通过配置的方式Autofac 《第三篇》
    通过配置的方式Autofac《第三篇》 一、基本配置1、通过配置的方式使用Autofac<?xmlversion="1.0"?><configuration><configSections><sectionname="autofac"type="Autofac.Configuration.SectionHandler,Autofac.Configur......
  • AutoFac IoC DI 依赖注入
    AutoFacIoCDI依赖注入 AutoFacIoCDI依赖注入记录点点滴滴知识,为了更好的服务后来者!一、为什么使用AutoFac?之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌似更为普遍,于是捯饬了两天,发现这个东东确实是个高大上的IOC容器~Autofac是.NET领域最为流行......
  • 项目升级到.Net8.0 Autofac引发诡异的问题
    前两天把项目升级到.Net8.0了,把.Net框架升级了,其他一些第三方库升级了一部分,升级完以后项目跑不起来了,报如下错误:Anunhandledexceptionoccurredwhileprocessingtherequest.DependencyResolutionException:Noneoftheconstructorsfoundwith'Autofac.Core.Activators......
  • java设计模式,英雄联盟的例子学习结构型模式
    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。结构型模式主要关注类或对象的组合,帮助确保如果一个系统的结构发生变化,系统的其他部分不会受到影响。适配器模式主要组成部分目标接口(Target):客户端所期待的接口。源类(Adapt......
  • 在Postman中使用Pre-request Script简单使用例子(二)——全局环境变量使用
    本文主要介绍在Postman中Pre-requestScript怎么使用全局环境变量快速进行api接口测试的方法。需求背景:客户端调用服务端不同接口,但是接口的使用规则都是一样的,就是使用常见的ak+sk方式进行生成签名放到header当中,服务端获取签名根据约定规则进行验证签名合法性。如果是开......
  • java算法:力扣动态规划公式和例子,套这个就够了!
    持续更新…(跟着代码随想录总结的)使用场景:只要数值无限依赖于前面的数值就可以套用这个公式五步法dp数组及下标的含义递推公式dp数组如何初始化遍历顺序打印dp数组经典举例:斐波那契数斐波那契数是:一个数组得的某个数字等于前两个数字之和dp[i]dp[i][j]......
  • autofac属性注入
    usingAutofac;namespaceautofac属性注入;internalclassProgram{staticvoidMain(string[]args){//创建一个容器ContainerBuilderbuilder=newContainerBuilder();//注册UserServicebuilder.RegisterType<UserService......
  • autofac构造函数注入
    usingAutofac;namespaceautofac构造函数注入;internalclassProgram{staticvoidMain(string[]args){//创建一个容器ContainerBuilderbuilder=newContainerBuilder();//注册UserServicebuilder.RegisterType<UserSe......
  • Autofac的基本使用1
    新建.net8控制台nuget安装Autofac新建接口publicinterfaceIUserService{    voidshow();}实现接口publicclassUserService:IUserService{    publicvoidshow()    {        Console.WriteLine("UserService执行");    }}调用stat......