Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能

2021年09月15日 阅读数:4
这篇文章主要向大家介绍Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

前言

在使用PRISM+WPF开发项目的过程当中,须要使用AutoMapper实现对象-对象的映射功能。无奈PRISM没有相关对AutoMapper相关的类库,因而转换一下思想,在nuget 中存在有关使用Microsoft.Extensions.DependencyInjection来实现AutoMapper的依赖注入方法,那能不能将DryIocMicrosoft.Extensions.DependencyInjection一块儿使用来实现依赖注入的功能呢?经过在网上搜索,发现
痕迹大佬实现了【WPF Prism8.0中注册Nlog日志服务】。文章地址:https://www.cnblogs.com/zh7791/p/15162484.htmlhtml

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

1、新建PRISM框架的项目

2、选择注入框架的时候必定要选择DryIoc框架。

3、添加nuget包

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

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

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

4、在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.net

题外话

添加上以上功能以后,若是还想引入其余类库实现依赖注入功能,只须要在此函数中添加实现依赖注入的代码便可。调试