我有一组项目,它们提供运行.Net服务所需的所有功能。该项目通过Ninject使用Dependency Inject。
我的(简化)解决方案如下所示:
Project 1: Windows Service (Composition Root)
^
Project 2: Server Engine & Heavy Lifting (Ninject Module)
^
Project 3: Persistence / DAL (Ninject Module)
^
Project 4: Interfaces & Basic / Shared functionality (Interfaces)
经过一些重大改进后,事实证明我需要创建一个新的"客户端"用于与Windows服务通信的库项目。此客户端成为新项目(Project 5
),并取决于Project 3
和Project 4
中的功能。即:
Project 5: Client (Class Library)
^
Project 3: Persistence / DAL (Ninject Module)
^
Project 4: Interfaces & Basic / Shared functionality (Interfaces)
这些问题源于我已经在Project 3
和Project 4
中构建了很多功能,这些功能必须在Client
中使用,但这两个项目已经具有依赖性在Ninject上,所以通过代理,客户端也依赖于Ninject。
我可以使用各种方法轻松解决这个问题,但我还没有找到一个资源解决方案,他们都觉得" hacky"就像我在一个圆形的方形推杆洞(What are the best practices for class libraries using dependency injection for internal operations?)。