Registrando o factory assíncrono no Autofac
Eu tenho uma classe Wallet que recebo de um repositório. Estou tentando registrar corretamente ambos no Autofac, então as classes que usam a carteira podem ter uma instância apropriada injetada. O problema é que o repositório usa um método assíncrono (retornando Task). O Autofac suporta tais casos?
Isso não funciona:
cb.RegisterType<WalletRepository>()
.As<IWalletRepository>()
.SingleInstance();
cb.Register(async c => await c.Resolve<IWalletRepository>().CreateAsync(App.WalletPath));
cb.RegisterType<ViewModel>()
.AsSelf().
.SingleInstance();
Em algum lugar no aplicativo eu só tenho:
class ViewModel
{
public ViewModel(Wallet wallet)
{
//nothing fancy here
}
}
Ao chamarcontainer.Resolve<ViewModel>()
Eu recebo uma exceção dizendo Wallet não está registrada.