在应用程序启动时向autoface注册操作

本文关键字:autoface 注册 操作 应用程序 启动 | 更新日期: 2023-09-27 18:11:01

我使用MVC与Autofac。我想注册的行动,运行一次每次应用程序启动。我想实现这样的目标:

public class SomeModule : IOnceRunnable
{
   private IService service;
   public SomeModule(IService service) 
   {
       this.service = service;
   }
   public void Action()
   {
      // this action would be called once on application start
   }
}
containerBuilder.RegisterOnceRunnable<SomeModule>();

可以执行这样的操作吗?

我知道我可以使用内置容器(var container = builder.Build(); <——resolve手动服务),但也许有像上面那样更"优雅"的解决方案。

在应用程序启动时向autoface注册操作

您正在寻找的是Autofac中可启动组件的支持。

需要实现Autofac.IStartable接口:

public class SomeModule : Autofac.IStartable
{
   private IService service;
   public SomeModule(IService service) 
   {
       this.service = service;
   }
   public void Start()
   {
      // this action would be called once on application start
   }
}

你还需要注册你的类型为IStartable:

builder
   .RegisterType<SomeModule>()
   .As<IStartable>()
   .SingleInstance();

和Autofac将在构建容器时运行一次Start方法来完成其余的工作。