每个应用程序启动时使用Autofac注册操作

时间:2014-07-01 11:47:37

标签: c# asp.net-mvc autofac

我使用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();&lt; - 解决手动服务)但也许有更多&#34;优雅&#34;像上面这样的解决方案。

1 个答案:

答案 0 :(得分:2)

您正在寻找的是Autofac中的Startable Components支持。

您需要实现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方法。