• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C# 开发日志本地化工具

c# 搞代码 4年前 (2022-01-09) 11次浏览 已收录 0个评论

    程序员讨厌写文档, 讨厌写注释, 而我还讨厌写日志, 输出一个  “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}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C# 开发日志本地化工具

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址