假設頂層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{}
}