我在我的代码中使用依赖注入(使用Ninject)并且认为我做得很好,直到我遇到由于误解DI容器适合代码的位置而导致的性能问题。似乎有很多关于如何使用DI框架的信息,但没有太多关于不使用它们的地方或者如何最好地使用它们(至少我能找到)
我想我会写出我认为最好的做法,看看其他人是否同意我以及人们可以提出的其他最佳做法。
答案 0 :(得分:7)
以下是最重要的一点(其中一些也出现在OP中)的简短列表:
我不能说我同意你关于Singleton vs. Transient对象的观点。 DI的重点是外部机制(例如DI容器)决定任何给定依赖关系的生命周期,而不是其他人,因此您需要让所有依赖关系由DI容器管理。
答案 1 :(得分:4)
仅将DI容器用于长寿命的Singleton对象,将工厂(或其他方法)用于短暂的瞬态对象)
但是,确实使用DI将工厂注入需要的地方。