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


一、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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM