反射實現IOC(控制反轉)

假設頂層Top類裏要用到A,B類的實例 。如果Top類裏直接new A,B對象,這樣耦合度高,不易維護。

我們可以用反射實現DI(依賴注入,和控制反轉是一個意思)來解耦。將A B類注入到Top類裏。

下面例子寫的比較簡單

namespace Test
{

    class Program
    {
        static void Main(string[] args)
        {
            Top t = new Top();
            t.getObject();
            Console.Read();
        }
    }

    class Top
    {
        
        public void getObject()
        {
            foreach (var type in Container.list)//反射
            {
                //通過反射創建AB類實例的代碼也可以放到容器裏
                var o = Activator.CreateInstance(type);
                Console.WriteLine("Get " + o.ToString());
            }
        }
    }
    //Top類通過容器和A,B類解耦了。這個容器寫得比較簡單
    static class Container
    {
        //也可以從配置文件裏讀取字符串用反射創建AB類實例   
        public static List<Type> list = new List<Type>()
        {
            typeof(A),
            typeof(B),
        };
    }
    class A{}
    class B{}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章