是否类似于 Java 的java.util.ServiceLoader,它允许通过 SPI 动态查找和加载组件?
我正在寻找 .NET 的一些轻量级本机功能,它允许我轻松插入接口提供程序,而不是笨重的 DI 容器或必须自己编写它。
更新:这在 .NET 上似乎并不容易获得,因为没有像 Java 那样本机内置的 SPI 功能。我接受了第一个答案,因为它最接近我所追求的。
是否类似于 Java 的java.util.ServiceLoader,它允许通过 SPI 动态查找和加载组件?
我正在寻找 .NET 的一些轻量级本机功能,它允许我轻松插入接口提供程序,而不是笨重的 DI 容器或必须自己编写它。
更新:这在 .NET 上似乎并不容易获得,因为没有像 Java 那样本机内置的 SPI 功能。我接受了第一个答案,因为它最接近我所追求的。
正如@JeffN825 所说,这些不是.NET 的本机容器。
也就是说,你说的笨重是什么意思?也许你提到了服务定位器模式的主要缺点:你到处都有对容器的引用,而且它非常具有侵入性。
借助Composition Root 模式,您可以将容器的使用转移到应用程序中的一个位置,从而减少使用容器的影响。这样您就可以消除“批量”:您配置一次,使用一次,然后就忘记它。
更新
回答您的意见:许多 IoC 容器具有某种可能满足您需求的自动注册功能。例如,这里是相关结构图文档页面的链接。
然后,您可以让您的 IoC 容器选择具有不同实现配置的不同程序集 - 即存根而不是实际实现。