0

我看到很多问题询问如何加载所有引用的程序集,即使不直接使用,但我想更进一步。我正在构建一个可以扩展的服务和接口,目的是我可以用其他类型扩展 Sender/Receiver,例如:接口负责发送 SMS 消息并且可以有不同的适配器,比如我有两个不同的应用程序想要使用 SMS 的人,每个人都有自己的ISmsAdapterand实现ISmsReplyAdapter,服务不一定会引用程序集(应用程序由 Windows 服务和用于接收回复的 WebAPI 服务组成)。

我希望能够做的不仅仅是注册我在引用程序集中的 autofac 模块,而且还在程序集中注册模块,这些模块在特定文件夹中,例如 /bin/plugins 或类似的东西

我找不到任何与此相关的东西,除了Caliburn.Micro它有一个DirectoryCatalog与我想要的类似的东西

请问有谁知道我如何能够使用 Autofac 实现这一目标?

4

1 回答 1

1

这不是一个真正的 Autofac 问题,而是一个反思问题。Autofac 不关心你如何加载程序集。

使用类似Assembly.LoadFrom的东西通过反射加载程序集,然后在 Autofac 中使用程序集扫描或继续使用反射手动定位程序集中的某些类型(例如,从模块继承的类型、具有特定命名约定的类型、实现某些接口等)并在 for 循环中单独注册类型。

于 2016-11-15T14:21:17.230 回答