讓AutoMapper更好用

2022-02-21 07:48:34 字數 1587 閱讀 1194

public

class

person

public

string age

}public

class

persondto

public

string age

}

按照官方使用方式,我們需要以下幾個步驟

//

配置對映

o.createmap

(); o.createmap

(); });

var p = new person ;

//進行轉換

當然,上面的使用方式沒有什麼問題,似乎也很簡單。但是對於乙個專案來說幾十成百的表已經是家常便飯,對於種配置方式會不會很蛋疼呢。想象一些一堆的createmap就會讓人噁心,我也看到現在有一些解決方案,即對對映進行粒化每乙個相關的功能或實體建立profile類,新增到profile集合中。在程式執行時統一註冊。這樣也不錯,但是還是會去寫一堆的profile類和createmap。

在abp中看到了使用特性的方式進行配置對映,簡單的一行**就可以解決問題,但是似乎在沒有使用abp的專案裡並不是那麼使用這種方式,所以我就借鑑了這種方法寫了乙個屬於自己的特性

[automapfrom(typeof(person))]

首先是建立乙個類去繼承自attribute,這是很簡單的。在實際專案中不一定都是乙個實體對應乙個dto的情況,還會有乙個實體對應多個dto的情況存在,所以tosource應該是乙個陣列

public

class

automapattribute : attribute

public automapattribute(params

type tosource)

}

後面的**就更為簡單了,我們拿到dto的程式集,(視專案程式集名而定) ,然後拿到所有的自定義型別判斷其中的type是否有貼上了automapattribute類,如果有的話,建立它的例項,拿到source,然後進行建立對映。很簡單對吧。

public

class

}});

}}

最後我們需要在程式啟動時去載入這些配置,一切就大功告成了。

protected

void

我想要的是方式是在物件上直接點出map並且使用泛型選擇我要轉換後的型別,這時候已經想到可以用擴充套件方法了,是不是很方便呢

public

static

class

automapextension

public

static tdestination mapto(this

tsource source, tdestination destination)

}

static

void main(string

args)

);var p = new person ;

//進行轉換

p.mapto();

}

自己動手 讓Editplus更好用

用過editplus的同學基本都會對它的輕巧與強大讚不絕口。我這樣用了3年以上的,早已是離不開它了。無論是在幾萬行文字裡執行複雜正則替換 還是一次開啟幾百個文字修改編碼 或者在結構層次很複雜的目錄中批量查詢,它都能輕鬆勝任。但是這麼好用的軟體有乙個我無法忍受的缺陷 自帶的資源管理器非常難用,分開顯示...

C 的庫應該更好用

不要重複造輪子!一遍一遍我們說著這樣的話。可是為什麼c c 的api那麼難用 尤其windows下的 每次我們都把時間浪費在了實現簡單邏輯而不是實現領域模型上了,其實,我們根本沒有足夠好的輪子。拋磚引玉,乙個在windows下檔案及資料夾操作的封裝。c 沒有理由不能像python一樣易用,至少某些庫...

比Xshel更好用的 FinalShell

1.多平台支援windows,mac os x,linux 2.多標籤,批量伺服器管理.3.支援登入ssh和windows遠端桌面.4.漂亮的平滑字型顯示,內建100多個配色方案.5.shell,sftp同屏顯示,同步切換目錄.6.命令自動提示,智慧型匹配,輸入更快捷,方便.7.sftp支援,通過各...