你好
我对.net框架中的IoC/DI框架了解不多。有人能给我一些链接,详细解释IoC/DI并提供一些C#示例吗?我想浏览一下,并更加了解这些框架。
这样我就可以知道在实现项目时在哪里和如何使用这些框架。
nrk
你好
我对.net框架中的IoC/DI框架了解不多。有人能给我一些链接,详细解释IoC/DI并提供一些C#示例吗?我想浏览一下,并更加了解这些框架。
这样我就可以知道在实现项目时在哪里和如何使用这些框架。
nrk
Spring.net http://www.springframework.net/
城堡温莎 http://www.castleproject.org/container/index.html 结构图 http://structuremap.sourceforge.net/Default.htm 有关IOC比较的好文章http://blog.ashmind.com/index.php/2008/08/19/comparing-net-di-ioc-frameworks-part-1/
http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx
希望这能有所帮助。我个人使用过Spring.Net和Castle Windsor - 后者可能更容易理解和使用。这一切都与松耦合有关。
想象一下,您有一个依赖于类bar的类foo。
public class Foo
{
public Foo(Bar bar)
{
}
}
在这里,我们必须将 bar 的实例传递到类中以实例化它。如果我们想要有两个不同的 Bar 实现,一个用于与数据库交互,另一个用于测试,会发生什么?
那么我们将创建并使用 IBar 接口,然后我们可以使用两个具体的实现。
现在考虑我们有很多复杂的依赖关系存在于很多类中,在很多地方被调用,如果我们想要更改实现,我们必须更改每个创建实现 IBar 对象的地方的代码,这可能是很多工作。
相反,我们可以像这样使用依赖注入。
IUnityContainer myContainer = new UnityContainer();
myContainer.RegisterType<IBar, Bar>();
Foo foo = myContainer.Resolve<Foo>();
在这里,Unity框架已经将一个Bar对象插入到Foo的构造函数中,如果您在一个地方更改了类型注册,则会更改整个地方解析Foo对象的方式。
当您拥有可能发生更改的复杂依赖关系时,依赖注入是必不可少的!