Piotr Szmyd 的回答基本上是正确的,但这里有一些更详细的信息:
您的 Orchard 模块是您添加到 Orchard.sln 的新 .csproj 添加 Autofac 作为对该 csproj 的引用(确保您使用 Orchard 附带的版本 - 而不是 nuget。有关该问题的更多详细信息,请参见此处)然后添加一个派生自 Autofac.Module 并实现 Load(ContainerBuilder) 的类。例如
using System;
using Autofac;
namespace MyCustom.Module.Namespace
{
public class LoaderModule : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MyClass>().As<IMyInterface>();
}
}
}
作为附加说明:Autofac 注册代码仅在应用程序启动时被调用。如果您在 IIS 中本地运行站点并在 VS 中运行代码,那么 Orcahrd 的动态编译特性意味着当您重新编译代码时,应用程序不会停止。
因此,为了使这个 Autofac 注册代码被命中(以及任何更改生效),您必须 iisreset 以终止应用程序,以便它重新加载 Autofac 注册。