摘要

如果我们已经知道了一个类所有的依赖项,在我们只需要依赖项的一个实例的场景中,在类的构造函数中引入一系列的依赖项是容易的。但是有些情况,我们需要在一个类里创建依赖项的多个实例,这时候Ninject注入就不够用了。也有些情况,我们不知道一个消费者可能需要哪个服务,因为他可能在不同的场合下需要不同的服务,而且在创建类的时候实例化所有依赖项也不合理。这样的情况,动态工厂可以帮忙。我们可以设计我们的类让他依赖一个工厂,而不是依赖这个工厂能够创建的对象。然后,我们能够命令工厂去通过命令创建需要的类型和任意需要的数量。下面两个例子解决上面两个问题。Ninject动态工厂创建指定数量的依赖项和创建指定类型的依赖项。

这篇文章只介绍Ninject动态工厂创建指定数量的依赖项,下一篇文章介绍Ninject动态工厂创建指定类型的依赖项。

附:代码下载

例子:形状工厂

在第一个例子中,我们将创建一个图形动态库。它包含一个ShapService类,提供一个AddShapes方法来给指定的ICanvas对象添加指定数量具体的IShape对象:

seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

 1     public void AddShapes(int circles, int squares, ICanvas canvas) 2     { 3         for (int i = 0; i < circles; i++) 4         { 5             var circle = new Circle(); 6        &nbs
        
		

网友评论