0

我正在使用 Autofac 来设置注入。

我的目的是使模块可插拔。

这意味着使用配置文件(xml,json)而不是使用代码(我已经知道)。

但是,Autofac 是否有可能在不在主(Web)项目文件中引用它的情况下查找程序集?例如,我想将新模块添加到已部署的包中,而不更改其他 dll 文件,只复制新模块的 dll 文件(与 web 项目的 dll 文件在同一文件夹中)并更改配置文件。

4

1 回答 1

0

是的,您可以只扫描要查找类型或模块的程序集(模块更好,因为您可以控制将哪些类型注册到程序集本身):

var builder = new ContainerBuilder();
var path = "path";

var assemblyFiles = Directory.GetFiles(path, "Plugin.*.dll");
builder.RegisterAssemblyModules(
    assemblyFiles.Select(
        file => Assembly.LoadFile(Path.Combine(path, file))).ToArray());

如果您更喜欢配置文件,您可以按照文档中的说明使用 app.config/web.config 。如果需要,您可以找到有关使用 Autofac 4 和新的基于 ASP.NET 5 JSON 的通信的文档。

于 2016-03-28T09:04:11.457 回答