我使用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;像上面这样的解决方案。
答案 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
方法。