我喜欢IoC主要用于帮助测试的工具,尤其是Moq等工具。我想采用我多年来在第三方开发人员将使用的公共图书馆中采用的这些测试实践,但是我不确定如何使库可以使用。
我已经采用了使用工厂进行实例化的实践,这是一种适用于过去项目的模式,但鉴于我控制了应用程序,我可以使用相同的容器来完成整个应用程序。
由于我想通过new
直接实例化我的库提供服务,或者我的应用程序消费者使用我的容器,我不确定如何使这个过程顺利进行。
一种理论是创建包裹已解析工厂的public static
方法;
public static class MyObjectProvider
{
public static IMyObject CreateSomeObject(//args)
{
return Container.Resolve<IMyObjectFactory>().Create(//args);
}
}
Container
是internal static
引用。虽然这本质上是一个服务定位器模式,但我想不出任何可行的方法。有了这个,链将通过构造函数注入来解决,标准票价将适用于此。