zoukankan      html  css  js  c++  java
  • 假丶依赖注入

    先在DAL添加多个共同的使用的接口:

    namespace SQLserver_MySQL
    {
        public interface ISqlHelper
        {
            string add();
            //  省略具体实现,如修改 删除 查询
        }
    }

    然后写DAL真正的方法继承上接口:

    namespace DAL
    {
        public class DALOracleSqlHelper : ISqlHelper
        {
            public int addOracle(string str)
            {
                //  省略具体实现
                return 1;
            }
            //  省略具体实现,如修改 删除 查询 
            public string add()
            {
                //  省略具体实现
                return "Oracle";
            }
        }
    }
    namespace DAL
    {
        public class DALMsSqlHelper : ISqlHelper
        {
            public int addMsSql(string str)
            {
                //  省略具体实现
                return 1;
            }
            public string add()
            {
                //  省略具体实现
                return "MsSql";
            }
        }
    }

    开始写BLL,利用构造函数来注入?不知道是不是这样说:

    namespace BLL
    {
        public class BLLAddStudent
        {
            ISqlHelper mssql = null;
            public BLLAddStudent(ISqlHelper sqlhelper)
            {
                mssql = sqlhelper;
            }
            
            public string addStudent()
            {
                return mssql.add();
            }
        }
    }

    到了我们的控制器,我这用到反射,可以随时替换:

    namespace SQLserver_MySQL
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Assembly asse = Assembly.LoadFrom("DAL.dll");
                ISqlHelper sql = (ISqlHelper)asse.CreateInstance("DAL.DALMsSqlHelper", true);
                sql = Assembly.Load("DAL").CreateInstance("DAL.DALMsSqlHelper") as ISqlHelper;
    
    
                ISqlHelper sqlhelper = new DALMsSqlHelper();         
                BLLAddStudent s = new BLLAddStudent(sqlhelper); 
                Console.WriteLine(s.addStudent());
    
    
                //ISqlHelper sqlhelper = new DALMsSqlHelper();
                //BLLAddStudent bll = new BLLAddStudent();
                //bll.sethelper(sqlhelper);
                ////BLLAddStudent s = new BLLAddStudent(sqlhelper); 
                //Console.WriteLine(s.addStudent());
    
                //Type dbHlperType = asse.GetType("DAL.DALOracleSqlHelper");
                //object obj = asse.CreateInstance("DAL.DALOracleSqlHelper"); //执行带参数的公共方法
                //object ds = dbHlperType.GetMembers();
                //object asd = dbHlperType.Name;
                //MethodInfo mt = dbHlperType.GetMethod("add");//加载方法
                //Console.WriteLine(mt.Invoke(obj, null));
    
    
    
                Console.ReadLine();
            }
        }
    }
  • 相关阅读:
    链表--反转链表(leetcode 206
    链表--重排链表(leetcode 143
    链表--删除链表中的结点(leetcode 237
    链表--K个一组反转链表(leetcode 25
    链表--相交链表(leetcode 160
    链表--两数相加II(leetcode 445
    链表--复制含有随机指针节点的链表(leetcode138
    链表--回文链表(leetcode234
    链表--环形链表(leetcode 141,142
    链表--分隔链表(leetcode86
  • 原文地址:https://www.cnblogs.com/ya-jun/p/11661342.html
Copyright © 2011-2022 走看看