1. 程式人生 > >兩個實用的工具推薦:ResxManager和ValueInjecter

兩個實用的工具推薦:ResxManager和ValueInjecter

一、ResxManager

1、  資原始檔編輯工具ResxManager,這個工具可以在一個介面中編輯所有語言的內容。

2、  可以新增、刪除key。

3、  注意:如果是新建的Resx,一定要有一個key之後才可以編輯。

4、  地址:有兩個版本,

單獨程式:http://resxmanager.com/

雖然還有想一些瑕疵,感覺對編輯多語言還是很有幫助的。

二、物件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/