• 两个实用的工具推荐: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/

  • 相关阅读:
    PVS 7.6 部署教程
    PHP下载远程图片的3个方法
    [Xcode 实际操作]二、视图与手势-(2)UIView视图的层次关系
    [Swift]检查API可用性
    [Xcode 实际操作]二、视图与手势-(1)UIView视图的基本使用
    [Swift]LeetCode103. 二叉树的锯齿形层次遍历 | Binary Tree Zigzag Level Order Traversal
    [Swift]forEach详解
    [Swift]LeetCode937. 重新排列日志文件 | Reorder Log Files
    [Swift]LeetCode940. 不同的子序列 II | Distinct Subsequences II
    [Swift]LeetCode939. 最小面积矩形 | Minimum Area Rectangle
  • 原文地址:https://www.cnblogs.com/acles/p/3987873.html
Copyright © 2020-2023  润新知