首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AutoMapper和FreshMvvm作为实例注入FreshIOC

如何使用AutoMapper和FreshMvvm作为实例注入FreshIOC
EN

Stack Overflow用户
提问于 2018-02-22 20:44:45
回答 1查看 935关注 0票数 0

我正试图为我的MainPageModel应用程序注入MainPageModel,但当加载应用程序时,它会崩溃。

我这样设置它,首先插入配置,然后将实现类型传递给DI容器。

代码语言:javascript
复制
// 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的大多数例子中,一个实例首先与一些配置一起创建,然后添加到容器中。像这样的普通点网核心应用程序:

代码语言:javascript
复制
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似乎不支持添加实例,并且单例映射如下:

代码语言:javascript
复制
FreshMvvm.FreshIOC.Container.Register<IService, MySingletonService>();

我如何向AutoMapper注入FreshMvvm?我还需要为IConfigurationProvider提供程序创建DI映射吗?如果是的话,是哪个实现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 21:01:56

在这一点上,文档并不明显。一旦您了解了FreshIOC是如何工作的,这是微不足道的。它接受一个实例作为Register调用的参数。

代码语言:javascript
复制
var config = new MapperConfiguration(cfg =>
{
    cfg.AddProfile(new AppProfile());
});

FreshMvvm.FreshIOC.Container.Register<IMapper>(config.CreateMapper());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48936842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档