我有一个在我的容器中注册为单个实例的服务
public class MyModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MyService>()
.As<IMyService>()
.SingleInstance();
}
}
容器创建如下
public static IContainer SetupContainer()
{
var builder = new ContainerBuilder();
var moduleTypes = TypeCache.GetTypes(x => x.IsClassEx() && !x.IsAbstractEx() && x.ImplementsInterfaceEx<IModule>());
foreach (var moduleType in moduleTypes)
{
if (Activator.CreateInstance(moduleType) is IModule module)
builder.RegisterModule(module);
}
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
builder.RegisterAssemblyModules(assemblies);
var result = builder.Build();
return result;
}
这一切都在正常代码中完美运行 - 我可以注入我的服务并按照我的预期解决它
但是,当我尝试将我的服务注入 web api 控制器时,该服务再次被解析,但 Autofac 给了我一个新的服务实例
如何防止这种行为,以便注入最初创建的实例?