设计具有依赖注入的Nuget包

时间:2013-08-16 08:46:55

标签: dependency-injection inversion-of-control nuget structuremap

我们目前正在编写一个充当服务网关的nuget包。它的职责是结束对外部服务的调用,以便以正确的方式进行,并正确处理响应。其目的是减少新客户端想要使用外部服务时的开销时间开销。

nuget包是在外部服务的解决方案中由一个名为“client”的项目构建的。这样客户端项目就可以共享一个公共域,并在构建号码发布时保持同步。客户端项目应用控制原理的反转,这意味着作为入口点的类(从外部服务获得响应的栈的开始)具有许多接口依赖性。

我们通常使用StrucutreMap作为我们的Io​​C容器,但我想知道如何使用依赖注入'内置'来配置我们的客户端项目?似乎错误的是每个消费者都必须连接包的依赖性解析。但是,也不应该是每个客户端都应该使用StructureMap并且必须将“ClientRegistry”(初始化程序)类添加到它自己的启动逻辑中。

有没有指导原则来帮助解决这个问题?或者基于IoC原则构建的复杂nuget包的任何好例子?

1 个答案:

答案 0 :(得分:2)

你可以使用CommonServiceLocator - 它不如完整的IoC容器那么丰富,但它会使你的包容器不可知,并且应该允许你的包的消费者继续使用他们选择的IoC容器。

  
    

该库提供了IoC容器和服务定位器的抽象。使用该库允许应用程序间接访问功能,而不依赖于硬引用。希望使用这个库,第三方应用程序和框架可以开始利用IoC /服务位置,而不必将自己束缚到特定的实现。