程序员讨厌写文档, 讨厌写注释, 而我还讨厌写日志, 输出一个 “Id=5, 姓名=王大锤, 性别=男, 生日=2020年1月1日” 总归会用到字符串的填充
var log = $"Id={person.Id}, 姓名={person.Name}, 性别={(person.Sex == SexType.Man ? "男性" : "女性")}, 生日={person.Birthday}";
Json序列化工具多好啊, 可是输出的是
{"id": 5,"name":"葫芦娃", "sex":"Man", "birthday":"2020-1-1 00:00:00"}
业务部门的人就是看不懂, 毕竟不是人人都有良好的英语基础, 同时我也经常猜不到有人用 DRLS 表示 “当日流水”.
其实如果只要稍微把 json 里面的key 用中文替代, 业务部门还是能大概读得懂大部分意思的.
所以我开发了一个工具 LocalizationTools, 协助生成中文日志.
新建一个 Console, 引入 nuget 包: LocalizationTools, 然后定义示例类
/// <summary> /// 人类 /// </summary> public class Person { /// <summary> /// Id /// </summary> public int Id { get; set; } /// <summary> /// 名字 /// </summary> public string Name { get; set; } /// <summary> /// 出生日期, 出生日期最好不要超过当前时间 /// </summary> [DisplayName("出生日期")] public DateTime Birthday { get; set; } /// <summary> /// 性别 /// </summary> public SexType Sex { get; set; } /// <summary> /// 是否活着 /// </summary> public bool IsAlive { get; set; } } /// <summary> /// 性别 /// </summary> public enum SexType { /// <summary> /// 男性 /// </summary> Man = 0, /// <summary> /// 女性 /// </summary> Woman = 2, /// <summary> /// 人妖 /// </summary> Ladyman = 3, }
记得在生成界面勾上 XML文档文件
使用代码
static void Main(string[] args) { var p1 = new Person { Id = 1, Name = "王大锤", Birthday = DateTime.Parse("2020-01-01"), Sex = SexType.Man, }; LocalizationTools.KeyValueSeparator = "="; var str = LocalizationTools.ToString(p1); <div>本文来源gaodai^.ma#com搞#代!码网</div> Console.WriteLine(str); }
相信这样的输出, 大部分人也应该能够看懂了
{"Id"=1,"名字"="王大锤","出生日期"="2020/1/1 0:00:00","性别"="男性","是否活着"=false}
LocalizationTools.ToString() 方法会将 属性名称 替换成注释里的 Summary 信息, 枚举值也同样会进行这样的替换
如果字段很少, 刚才的输出还没什么问题, 如果字段非常多, 读着就眼花缭乱了, 所以我建议还是这行删除
LocalizationTools.KeyValueSeparator = "=";
这样输出的内容是
{"Id":1,"名字":"王大锤","出生日期":"2020/1/1 0:00:00","性别":"男性","是否活着":false}