我有一个从存储库中获取的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