假设顶层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{}
}