我有两个应用程序(在同一个解决方案中)依赖于同一个共享库(单独的项目)。这个共享库完成了大部分工作,并将一些服务作为接口依赖项。
我的每个应用程序的 IoC 容器看起来都相同,除了两个应用程序之间需要不同的一项服务。我怎样才能最大限度地减少 IoC 容器中的这种重复?
如果我正确理解了问题(并考虑到在没有看到实际代码的情况下很难争论正确的解决方案),方法将是这样的。
假设您有下一个解决方案结构:
SharedLib(can be just dll/nuget)
...
AppOne(refs and DI's shared)
...
AppTwo(refs and DI's shared)
...
那么你需要做的是:
SharedLib
...
Shared.DI (refs SharedLib and package with your IoC container, and other stuff if needed)
...
AppOne (refs Shared.DI)
...
AppTwo (refs Shared.DI)
...
在Shared.DI
您创建一个名为 like 的方法中RegisterShared
,它将处理所有注册并将从AppOne
和调用AppTwo
。我会建议这样的东西:
public static RegistrationExtensions
{
public static void RegisterShared(this YourIoCBuilder builder,
Action<YourIoCBuilder> registerUniqueServiceAction)
{
// do the common stuff
registerUniqueServiceAction(builder);
}
}
您可以在registerUniqueServiceAction
之前或之后省略并注册所需的服务,但我个人更喜欢更明确的 API,因此很明显,此方法不会注册SharedLib
工作所需的所有内容。还取决于您使用的 IoC 究竟是什么,您可以为其提供更明显的签名,registerUniqueServiceAction
以便清楚实际需要什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句