我正试图为我的MainPageModel应用程序注入MainPageModel,但当加载应用程序时,它会崩溃。
我这样设置它,首先插入配置,然后将实现类型传递给DI容器。
// Init automapper
AutoMapper.Mapper.Initialize(cfg => cfg.AddProfile(new AppProfile()));
// Add automapper to DI
FreshMvvm.FreshIOC.Container.Register<IMapper, AutoMapper.Mapper>();
// Load page (results in crash)
var page = FreshPageModelResolver.ResolvePageModel<MainPageModel> ();我得到的错误消息是:
TinyIoCResolutionException:解决失败: IConfigurationProvider
如果我尝试用一些IService接口注入一个常规的IService,那就非常好了,所以FreshMvvm如何实例化AutoMapper实例似乎是个问题。
在我见过的使用其他DI-容器注入AutoMapper的大多数例子中,一个实例首先与一些配置一起创建,然后添加到容器中。像这样的普通点网核心应用程序:
public void ConfigureServices(IServiceCollection services)
{
// Crate config instance
var config = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new YourProfile());
});
// Create a mapper from config and add instance as singleton
services.AddSingleton<IMapper>(sp => config.CreateMapper())
}但是,根据docs (https://github.com/rid00z/FreshMvvm#ioc-container-lifetime-registration-options),FreshMvvm似乎不支持添加实例,并且单例映射如下:
FreshMvvm.FreshIOC.Container.Register<IService, MySingletonService>();我如何向AutoMapper注入FreshMvvm?我还需要为IConfigurationProvider提供程序创建DI映射吗?如果是的话,是哪个实现?
发布于 2018-02-22 21:01:56
在这一点上,文档并不明显。一旦您了解了FreshIOC是如何工作的,这是微不足道的。它接受一个实例作为Register调用的参数。
var config = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new AppProfile());
});
FreshMvvm.FreshIOC.Container.Register<IMapper>(config.CreateMapper());https://stackoverflow.com/questions/48936842
复制相似问题