Ioc-Autofac的使用

serveral IoC Framework  has  already exist on the market,Take account of compenhensive factor,Autofac is best choice for Ioc, If you want to konw more about competion among the serverals Framework.

you can get the information from web, it will prove that Autofuc is best. Now I will give some simple example  how to use Autofac.

the first example:

using Autofac;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IOC
{
    public interface IDataBase
    {
        void Select(string sql);
    }
    public class Sqlserver : IDataBase
    {
        public void Select(string sql)
        {
            Console.WriteLine("access sqlserver datebase,T-SQL:"+sql);
        }
    }
    public class Oracle : IDataBase
    {
        public void Select(string sql)
        {
            Console.WriteLine("access oracle database by,T-SQL: "+sql);
        }
    }

    public class DataBaseManager
    {
        IDataBase _database;
        public DataBaseManager(IDataBase database)
        {
            _database = database;
        }

        public void Search(string sql)
        {
            _database.Select(sql);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<DataBaseManager>();
            builder.RegisterType<Sqlserver>().As<IDataBase>();
            using (var container = builder.Build())
            {
                var manager = container.Resolve<DataBaseManager>();
                manager.Search("SELECT * FROM TB_USER");
            }
            //代码分析;
            //这里可以通过ContainerBuilder 方法RegsisterType对DataManager进行注册;
            //当注册的类型在相应得到的容器中可以Resolve你的DatabaseManager实例
            //builder.RegisterType<SqlDatabase>().As<IDatabase>();通过AS可以让DatabaseManager类中通过构造函数依赖注入类型相应的接口。
            //Build()方法生成一个对应的Container实例,这样,就可以通过Resolve解析到注册的类型实例。
            //显然以上的程序中,SqlDatabase或者OracleDatabase已经暴露于客户程序中了,现在我想将该类型选择通过文件配置进行读取。Autofac自带了一个Autofac.Configuration.dll 非常方便地对类型进行配置,避免了程序的重新编译。

            Console.ReadLine();

        }
    }
}
时间: 2024-12-11 01:28:10

Ioc-Autofac的使用的相关文章

IOC容器-Autofac在MVC中实现json方式注入使用

在你阅读时,默认已经了解IOC和autofac的基本用法, 我在最近的我的博客项目中运用了IOC autofac 实现了依赖注入 由于我的项目时asp.net MVC所以我目前向大家展示MVC中如何使用autofac 首先在app_start中新建一个类包含以下方法 using System.Reflection; using Autofac; using Autofac.Integration.Mvc; using System.Web.Mvc; using Microsoft.Extensi

.Net 一些好工具

原文:.Net 一些好工具 1.代码类 ReSharper :代码检查,代码补齐,(收费)(vs插件) MultiEditing: vs多行编译工具 VSCommand : Web Essentials : Css扩展支持,JS 扩展支持 VS 10X CodeMap(CodeSmart) Nuget VsVim CodeSmith (收费代码生成) 东软代码生成器 --类库 --ioc AutoFac Niject --http请求 httplib restSharp --excel NPOL

c#项目架构搭建经验

读过.Net项目中感觉代码写的不错(备注1)有:bbsMax(可惜唧唧喳喳鸟像消失了一样),Umbraco(国外开源的cms项目),Kooboo(国内做开源cms).本人狭隘,读的代码不多,范围也不广泛. 你是否一直渴望自己能开发出一套系统架构,让人读起来感觉到程序有条理,结构很合理. 好的架构师需要具备:   1.项目经验丰富.(应该是从一堆堆项目中走出来的,丰富的经验比大篇大论的理论更深刻.) 2.知识的全面性,基础的扎实程度.(知识的全面性不要求你什么都知道,起码要能熟练掌握WCF,Sil

NetCore开源项目集合

具体见:https://github.com/thangchung/awesome-dotnet-core 半年前看到的,今天又看到了,记录下. General ASP.NET Core Documentation - The official ASP.NET Core documentation site. .NET Core Documentation - Home of the technical documentation for .NET Core, C#, F# and Visual

关于ASP.Net Core Web及API身份认证的解决方案

6月15日,在端午节前的最后一个工作日,想起有段日子没有写过文章了,倒有些荒疏了.今借夏日蒸蒸之气,偷得浮生半日悠闲.闲话就说到这里吧,提前祝大家端午愉快(屈原听了该不高兴了:))!.NetCore自发布以来,颇受关注,现在.Net Core2.0已经正式发布,边迫不及待的将.Net跨平台移植的工作进行到底.想来,也费不了多少事儿.我经常和同事们说,要敢于尝试新鲜事物,不阴损守旧,方能使自己不断进步,站在队伍的前列.下面就关于Asp.Net Core在Web 及API项目上身份认证的问题做下简单

.NET技术栈

.NET Common Language Infrastructure (CLI) Common Language Runtime (CLR) Just-In-Time (JIT) Garbage Collector (GC) Object Pinning Generations Gen 0 Gen 1 Gen 2 Memory Management Stack Managed Heap Large Object Heap Fragmentation Compaction Security Co

用Autofac实现MVC5的IoC控制反转方法

Autofac跟Ninject一样,都是用于IOC,实现依赖注入的.主要有两个步骤,其余跟Ninject差不多. 1.主要的操作是在MVC项目下的Infrastructure(基础结构/公共建设)文件夹下,新建一人注册Autofac的IOC的类 namespace BookShop.WebUI.Infrastructure { public class AutofacReg { public static void RegisterDenpendencies() { var build = ne

Autofac 的属性注入,IOC的坑

Autofac 是一款优秀的IOC的开源工具,完美的适配.Net特性,但是有时候我们想通过属性注入的方式来获取我们注入的对象,对不起,有时候你还真是获取不到,这因为什么呢? 1.你对Autofac 不太了解,在这个浮躁的社会,没有人会认真的了解每个开源项目,只要求能用就行 2.没有时间了解,你是一个很忙的人,工作很忙,应酬很忙 3.刚开始使用Autofac 还没来得及深入了解就要做项目. 不管是什么原因,总之我们注入的属性就是无法直接由autofac 自动注入,或者说我们希望由Autofac自动

依赖反转Ioc和unity,autofac,castle框架教程及比较

1.依赖倒置的相关概念 http://www.cnblogs.com/fuchongjundream/p/3873073.html IoC模式(依赖.依赖倒置.依赖注入.控制反转) 2.依赖倒置的方式 http://www.cnblogs.com/muzinian/p/3357741.html 于依赖反转原则.控制反转和依赖注入的抽象的初学者指南 3.主流ioc框架 http://www.cnblogs.com/bchp/articles/1527693.html http://www.cnbl

Ioc容器Autofac系列(1)-- 初窥

前言 第一次接触Autofac是因为CMS系统--Orchard,后来在一个开源爬虫系统--NCrawler中也碰到过,随着深入了解,我越发觉得Ioc容器是Web开发中必不可少的利器.那么,Ioc容器是用来做什么的?用了有什么好处?我相信如果不明白这两点就很难敞开心扉接受Ioc容器. 传统解耦设计的弊端 为方便描述,举个日志的栗子.我简化实现,一个Log类,一个SaveLog方法.如果其他类想拥有记日志功能,那么只需在内部包含一个Log类型的变量: public class Log  {