zoukankan      html  css  js  c++  java
  • 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.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

    题外话

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

    作者:芝麻麻雀
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Java面试基础 -- Git篇
    Java面试基础
    如何避免死锁?
    如何减少上下文切换?
    Java中的volatile变量有什么作用?
    Thread类中start()方法喝run()方法有什么不同?
    (一)java异常处理的几个问题
    SUSE CaaS Platform 4
    SUSE CaaS Platform 4
    SUSE Ceph 增加节点、减少节点、 删除OSD磁盘等操作
  • 原文地址:https://www.cnblogs.com/sesametech-netcore/p/15271061.html
Copyright © 2011-2022 走看看