是否有人知道一组类来抽象出特定的依赖注入库(Spring,Castle,StructureMap,Ninject ......等)?
我们都使用DI容器来抽象出我们代码的特定实现,但是我们也可以使用相同的接口/策略模式来编写基于通用接口的DI容器,使用特定的实现,例如Castle.Windsor,Unity ..等等。
一般来说,容器中“获取和对象”的基本模式非常普遍。例如:
IService service = IocContainer.Get<IService>();
IocContainer是围绕特定库实现的通用包装类,例如Castle.Windsor,Unity ......等。
当然,除了编写您可以“插件”的特定实现之外,当然,每个实现都有自己的配置文件格式。
任何人对DI容器的现有经过良好测试的包装类都有建议吗?
答案 0 :(得分:3)
所有这些包装器和容器抽象的问题在于它们将您限制为所有容器共享的函数的公共子集。这就是你不应该这样做的原因。而是正确使用您选择的容器:
使用这些简单的规则,您的容器只在一个地方知道 - 组合根 - 这使得容器的任何抽象都过时了。这样你可以使用容器的全部功能。