一、ResxManager
1、 資源文件編輯工具ResxManager,這個工具可以在一個界面中編輯所有語言的內容。
2、 可以新增、刪除key。
3、 注意:如果是新建的Resx,一定要有一個key之后才可以編輯。
4、 地址:有兩個版本,
單獨程序:http://resxmanager.com/
vs插件:http://visualstudiogallery.msdn.microsoft.com/3b64e04c-e8de-4b97-8358-06c73a97cc68
雖然還有想一些瑕疵,感覺對編輯多語言還是很有幫助的。
二、對象Mapper工具
1、對象Mapper工具有好幾種,比如:AutoMapper、EmitMapper、ValueInjecter,經過比較比較推薦ValueInjecter。
2、下面是測試截圖,測試用的類包含16個基本類型、一個List類型,list類型對象的數據結構是測試類去掉List之后的結構。
測試類生成的對象中,包含10個list,所以還是能有一定的借鑒意義的。
先貼出測試類數據結構:
public class BigData { public long Id { get; set; } public int Count { get; set; } public string str1 { get; set; } public string str2 { get; set; } public string str3 { get; set; } public string str4 { get; set; } public string str5 { get; set; } public string str6 { get; set; } public string str7 { get; set; } public string str8 { get; set; } public string str9 { get; set; } public string str10 { get; set; } public string str11 { get; set; } public string str12 { get; set; } public DateTime CreatedTime { get; set; } public DateTime UpdatedTime { get; set; } public List<BigDataItem> Items { get; set; } }
public class BigDataItem { public long Id { get; set; } public int Count { get; set; } public string str1 { get; set; } public string str2 { get; set; } public string str3 { get; set; } public string str4 { get; set; } public string str5 { get; set; } public string str6 { get; set; } public string str7 { get; set; } public string str8 { get; set; } public string str9 { get; set; } public string str10 { get; set; } public string str11 { get; set; } public string str12 { get; set; } public DateTime CreatedTime { get; set; } public DateTime UpdatedTime { get; set; } }
下面是對手工、AutoMapper、EmitMapper、ValueInjecter、ValueInjecter使用DeepCloneInjectionde的運行時間對比(按照時間順序)。
大家可以對比,ValueInjecter優勢還是比較明顯的,雖然和手工編碼還有一定的差距,我感覺代碼效率和編碼復雜度的平衡來說,ValueInjecter還是不錯的選擇,一些Codeplex上的開源程序就在使用ValueInjecter.
3、ValueInject具體實現方式還在研究中,貌似不是直接使用反射也不是Emit。在部分源碼中看到有TypeDescriptor這個類的使用,需要深入研究一下。
4、地址:https://valueinjecter.codeplex.com/