zoukankan      html  css  js  c++  java
  • 依赖注入(Autofac)

    1.下载autofac压缩包:http://code.google.com/p/autofac/downloads/list

    2.解压获得autofac.dll和autofac.configuration.dll文件

    依赖注入顾名思义 要存在依赖关系

    例如:

       class DataBaseManager
        {
            IDataBase _idatabase;
            public DataBaseManager(IDataBase idatabase)
            {
                
            }
        }
    

     下面是上图中需要的接口和相应的基类:

     interface IDataBase
        {
            string Name { get;}
            void Select(string commandText);
            void Insert(string commandText);
            void Update(string commandText);
            void Delete(string commandText);
        }
     class SqlDataBase : IDataBase
        {
            public string Name { get { return "sql"; } }
            public void Select(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}",commandText,Name);
            }
            public void Insert(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
            public void Update(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
            public void Delete(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
        }
        class OracleDataBase : IDataBase
        {
            public string Name { get { return "oracel"; } }
            public void Select(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
            public void Insert(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
            public void Update(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
            public void Delete(string commandText)
            {
                Console.WriteLine("'{0}'  is  {1}", commandText, Name);
            }
        }


    下面我们在主函数中通过autofac实现简单的注入:

    注入前首先要对部分类进行注册 注册的方法有好多种 RegisterInstance RegisterType  Register RegisterMoudle RegisterControllers RegisterAssemblyTypes 我知道的就这些

    static void Main(string[] args)
            {          
                var builder = new ContainerBuilder();
                builder.RegisterType<SqlDataBase>().As<IDataBase>();
                //builder.RegisterInstance(new OracelDataBase()).As<IDataBase>();
    //builder.RegisterType<DataBaseManager>();和下面一行的结果相同 builder.Register(c=>new DataBaseManager(c.Resolve<IDataBase>())); using(var container=builder.Build()) { var manager=container.Resolve<DataBaseManager>(); manager.Select("Select * from database"); } Console.ReadKey(); }
  • 相关阅读:
    知识图谱应急安全场景应用规划
    DataxWeb 设置运行错误
    Datax mysql 8.x elasticsearch 7.x 测试成功json样例
    testmysqltoelasticsearch76.json 未测试,仅参考
    testmysqltoelasticsearch75.json 未测试,仅参考
    testorcletoelasticsearch73.json 微测试,仅参考
    testmysqltoelasticsearch74.json 未测试,仅参考
    testmysqltoelasticsearch72.json 微测试,仅参考
    go可变参数
    Java 8 终于支持 Docker !
  • 原文地址:https://www.cnblogs.com/steben/p/3399620.html
Copyright © 2011-2022 走看看