我有一個從存儲庫中獲取的Wallet類。我試圖在Autofac中正確註冊,所以使用錢包的類可以注入適當的實例。問題是存儲庫使用異步方法(返回任務)。 Autofac是否支持這種情況?在Autofac中註冊異步工廠
這不起作用:
cb.RegisterType<WalletRepository>()
.As<IWalletRepository>()
.SingleInstance();
cb.Register(async c => await c.Resolve<IWalletRepository>().CreateAsync(App.WalletPath));
cb.RegisterType<ViewModel>()
.AsSelf().
.SingleInstance();
某處在應用程序,我只是有:
class ViewModel
{
public ViewModel(Wallet wallet)
{
//nothing fancy here
}
}
當調用container.Resolve<ViewModel>()
我得到一個異常說錢包未註冊。
您是否可以包含使用代碼或至少使用注入依賴關係的ctor和example方法? – 2013-04-06 20:14:56
沒有回答這個問題,但我想說你的WalletRepository不應該需要IO初始化。嘗試初次使用其中一種方法時首先使用它。 – usr 2013-04-06 20:31:51
它不是使用IO初始化的存儲庫,而是一個Wallet對象(它們是從文件加載的)。 – Pein 2013-04-06 21:34:47