Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能
前言
在使用PRISM+WPF開(kāi)發(fā)項(xiàng)目的過(guò)程中,需要使用AutoMapper實(shí)現(xiàn)對(duì)象-對(duì)象的映射功能。無(wú)奈PRISM沒(méi)有相關(guān)對(duì)AutoMapper相關(guān)的類(lèi)庫(kù),于是轉(zhuǎn)換一下思想,在nuget 中存在有關(guān)使用Microsoft.Extensions.DependencyInjection來(lái)實(shí)現(xiàn)AutoMapper的依賴(lài)注入方法,那能不能將DryIoc和Microsoft.Extensions.DependencyInjection一起使用來(lái)實(shí)現(xiàn)依賴(lài)注入的功能呢?通過(guò)在網(wǎng)上搜索,發(fā)現(xiàn)痕跡大佬實(shí)現(xiàn)了【W(wǎng)PF Prism8.0中注冊(cè)Nlog日志服務(wù)】。文章地址:https://www.cnblogs.com/zh7791/p/15162484.html
依據(jù)痕跡大佬的文章引導(dǎo),在PRISM+WPF項(xiàng)目中實(shí)現(xiàn)了對(duì)AutoMapper的依賴(lài)注入功能。
一、新建PRISM框架的項(xiàng)目
二、選擇注入框架的時(shí)候一定要選擇DryIoc框架。
三、添加nuget包
需要在主項(xiàng)目中添加以下四個(gè)nuget包,包名如下:
DryIoc.Microsoft.DependencyInjection Microsoft.Extensions.DependencyInjection AutoMapper AutoMapper.Extensions.Microsoft.DependencyInjection我在項(xiàng)目中添加的版本如下圖所示:
四、在App.xaml.cs中添加函數(shù):CreateContainerExtension
具體實(shí)現(xiàn)如下:ClassA和ClassB是在其他項(xiàng)目中定義的兩個(gè)類(lèi)。
///?<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的項(xiàng)目中需要添加上AutoMapper的nuget引用。然后就可以在具體的類(lèi)中使用依賴(lài)注入方式使用AutoMapper功能了。上一張調(diào)試截圖具體看一下吧:紅色框中就是依賴(lài)注入的功能。
題外話
添加上以上功能之后,如果還想引入其他類(lèi)庫(kù)實(shí)現(xiàn)依賴(lài)注入功能,只需要在此函數(shù)中添加實(shí)現(xiàn)依賴(lài)注入的代碼即可。
— END —
「公眾號(hào)推薦」
回復(fù):「rdm」?獲取Redis Desktop Manager版的安裝包
回復(fù):「redis」?獲取5.0.9版的Windows安裝包(exe)
回復(fù):「ca」 獲取 ?截圖、GIF等工具三件套,便攜版和安裝版全部包括
「加號(hào)主回復(fù)”入群“」即可加入群聊
總結(jié)
以上是生活随笔為你收集整理的Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【需要重视的BUG】:偷权限的情况
- 下一篇: .NET 6 中的隐式命名空间引用