我想在注册过程中调用一个可等待异步
方法,像这样:
// builder variable contains Autofac ContainerBuilder
builder.Register(
(async (context, parameters) => // need async here
{
var someClass = new SomeClass(context.Resolve<ISomeDependency>());
await someClass.SomeAsyncInitMethod(); // need to await result
return someClass;
})).As<ISomeClass>().SingleInstance();
SomeClass
实现了 ISomeClass
作为服务。
重要的部分是调用了 someClass.SomeAsyncInitMethod()
。由于它是 async
,所以我需要在这里使用 await
并将 async
关键字放入 Register
方法中。但现在 Autofac 认为这返回一个无法注册为 Service
ISomeClass
的 Task<SomeClass>
。
如何在等待 async
初始化方法时实现上述操作并将 SomeClass
注册为 ISomeClass
?