我的第一篇文章,所以你好所有:)软件设计:DI - 多个程序集+非公开类型
我正在使用楼梯模式,例如,我装配A(入口点 - 组合物根),这依赖于组件B(含有接口)和组装体C包含在组件B中定义的接口的实现:
A - >乙< - Visual C
我正在用C#开发,我正在使用Castle Windsor作为IoC。
我还利用Windsor注册非公共类型的能力(https://github.com/castleproject/Windsor/blob/master/docs/registering-components-by-conventions.md - >注册非公共类型)。我发现它很有用,因为我可以将程序集C中的类定义为内部的,这意味着没有人会从A创建对C的直接依赖。这样A和C只依赖于仅包含对我来说听起来正确的抽象的程序集B.
我想知道如果这是一个很好的设计选择。据我所知只有温莎允许注册非公共类型,他们也警告不公开类型,因此我的问题。此外,我不认为这个考虑因素仅限于.NET世界,所以我会欣赏洞察这个问题,无论你使用的技术如何:)
我已经在Autofac中使用每个具有内部类型的程序集中的模块完成了相同的操作。主入口程序集只知道它需要注册的模块(例如:电子邮件模块等) – Bishoy