前言

在使用PRISM+WPF开发项目的过程中,需要使用AutoMapper实现对象-对象的映射功能。无奈PRISM没有相关对AutoMapper相关的类库,于是转换一下思想,在nuget 中存在有关使用Microsoft.Extensions.DependencyInjection来实现AutoMapper的依赖注入方法,那能不能将DryIocMicrosoft.Extensions.DependencyInjection一起使用来实现依赖注入的功能呢?通过在网上搜索,发现

痕迹大佬实现了【WPF Prism8.0中注册Nlog日志服务】。文章地址:https://www.cnblogs.com/zh7791/p/15162484.html

依据痕迹大佬的文章引导,在PRISM+WPF项目中实现了对AutoMapper的依赖注入功能。

一、新建PRISM框架的项目

二、选择注入框架的时候一定要选择DryIoc框架。

三、添加nuget包

需要在主项目中添加以下四个nuget包,包名如下:

DryIoc.Microsoft.DependencyInjection
Microsoft.Extensions.DependencyInjection
AutoMapper
AutoMapper.Extensions.Microsoft.DependencyInjection

我在项目中添加的版本如下图所示:

四、在App.xaml.cs中添加函数:CreateContainerExtension

具体实现如下:ClassAClassB是在其他项目中定义的两个类。

/// <summary>
/// Create a new <see cref="T:Prism.DryIoc.DryIocContainerExtension" /> used by Prism.
/// </summary>
/// <returns>A new <see cref="T:Prism.DryIoc.DryIocContainerExtension" />.</returns>
protected override IContainerExtension CreateContainerExtension()
{
var serviceCollection = new ServiceCollection();
serviceCollection.AddAutoMapper(cfg =>
{
cfg.CreateMap<ClassA,ClassB>();
});
return new DryIocContainerExtension(new Container(CreateContainerRules()).WithDependencyInjectionAdapter(serviceCollection));
}

这样就可以了。在需要使用AutoMapper的项目中需要添加上AutoMapper的nuget引用。然后就可以在具体的类中使用依赖注入方式使用AutoMapper功能了。

上一张调试截图具体看一下吧:红色框中就是依赖注入的功能。



源码资源下载https://download.csdn.net/download/weixin_42930928/22913396

题外话

添加上以上功能之后,如果还想引入其他类库实现依赖注入功能,只需要在此函数中添加实现依赖注入的代码即可。

Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能的更多相关文章

  1. Spring-Context的注解实现依赖注入功能

    使用Spring-Context的注解实现依赖注入功能. Demo要点: 本例子中主要使用Annotation功能来实现对MoviceService的注入.我们将Cinema.java的头部标注为@C ...

  2. [.NET] 使用Json.NET提供依赖注入功能(Dependence Injection)

    [.NET] 使用Json.NET提供依赖注入功能(Dependence Injection) 前言 在一些小型项目的开发情景里,系统不需要大型DI Framework所提供的:单一对象生成.生命周期 ...

  3. SpringBoot中实现依赖注入功能

    本文转载自:https://blog.csdn.net/linzhiqiang0316/article/details/52639888 今天给大家介绍一下SpringBoot中是如何实现依赖注入的功 ...

  4. 14.AutoMapper 之依赖注入(Dependency Injection)

    https://www.jianshu.com/p/f66447282780   依赖注入(Dependency Injection) AutoMapper支持使用静态服务定位构建自定义值解析器和自定 ...

  5. Microsoft.Extensions.DependencyInjection中的Transient依赖注入关系,使用不当会造成内存泄漏

    Microsoft.Extensions.DependencyInjection中(下面简称DI)的Transient依赖注入关系,表示每次DI获取一个全新的注入对象.但是使用Transient依赖注 ...

  6. 采用dom4j和反射模拟Spring框架的依赖注入功能

    Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...

  7. PHP 从另一个角度来分析 Laravel 框架的依赖注入功能

    从根本上说,依赖注入不是让对象创建一个依赖关系,也不是让工厂对象去创建对象,而是将所需的依赖变成一个外部对象,使之成为一个"某些人的问题” 你为"某些人的问题”注入了类的依赖关系. ...

  8. 手写web框架之实现依赖注入功能

    我们在Controller中定义了Service成员变量,然后在Controller的Action方法中调用Service成员变量的方法,那么如果实现Service的成员变量? 之前定义了@Injec ...

  9. 30个类手写Spring核心原理之依赖注入功能(3)

    本文节选自<Spring 5核心原理> 在之前的源码分析中我们已经了解到,依赖注入(DI)的入口是getBean()方法,前面的IoC手写部分基本流程已通.先在GPApplicationC ...

随机推荐

  1. UI_UE在线就业班(2)(Adobe Illustrator软件学习)

    Adobe Illustrator软件的使用     认识AIUI_UE在线就业班(2) .   ▼ AI是Adobe Illustrator的英文缩写,是Adobe公司旗下推出的一款基于矢量图形制作 ...

  2. 【Android面试查漏补缺】之事件分发机制详解

    前言 查漏补缺,查漏补缺,你不知道哪里漏了,怎么补缺呢?本文属于[Android面试查漏补缺]系列文章第一篇,持续更新中,感兴趣的朋友可以[关注+收藏]哦~ 本系列文章是对自己的前段时间面试经历的总结 ...

  3. 原生js 以ajax(post)的方式传json至php,并让php解析为数组

    如题. 比如要把一个json,如 json= {name:"John Rambo", time:"3pm"},,通过js ,传到一个php服务器 fwq.php ...

  4. CYPEESS USB3.0程序解读之---同步FIFO(slaveFifoSync)

    上一篇文章解读了CYPRESS FX3的GPIO的操作过程,下面解读同步FIFO的一个例子(slaveFifoSync). *生产者,消费者. 1.首先看DMA的回调函数(cyu3dma.h): ty ...

  5. 用Autohotkey让Kitty命令行变得更好用

    下面的脚本实现Win+K键激活一个输入框,给出了kitty命令行常用的几种格式,基本可分为两种:连接保存好的模板(session)和完全手工连接,前者用-load加Session名称,后者需要在命令行 ...

  6. MySQL学习06(事务和索引)

    事务 概述 什么是事务 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL事务处理只支持InnoDB和BDB数据表类型 事务的ACI ...

  7. Http协议中的CharacterEncoding、Content-Encoding和Transfer-Encoding

    https://www.cnblogs.com/jinzhiming/p/5765672.html https://www.jianshu.com/p/e918a65b617f https://www ...

  8. Woc,考场(面试)忘记打平衡树怎么办,Trie救你命

    Woc,考场(面试)忘记打平衡树怎么办,Trie救你命 文本只发布于博客园,其他地方出现本文均是未经许可的盗版. 算法导入 众所周知平衡树很难打(大佬除外),还老是调错.万一这种事情发生在关键时刻你就 ...

  9. SpringCloud升级之路2020.0.x版-19.Eureka的服务端设计与配置

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford Eureka Se ...

  10. javaWeb常用面试题

    JDBC JDBC访问数据库的基本步骤是什么? 加载驱动 通过DriverManager对象获取连接对象Connection 通过连接对象获取会话,有2种方式Statement.PreparedSta ...