Roslyn+T4+EnvDTE项目完全自动化(5) ——自动生成ToString方法

(视频演示)

resharper 的Refactor生成 ToString在某些场景,很不方便,无法批量生成,无法从特性、注释获取,自己用Roslyn重新写一个解决这些问题

需求:批量生成ToString方法

  1. 对类自动生成ToString方法
  2. 支持插值、StringBuilder输出
  3. 文字描述从特性、注释获取
  4. 支持nameof
  5. 自动对齐
  6. 可以自动翻译字段
复制代码
 1 public partial class film
 2 {
 3     public override string ToString()
 4     {
 5         var sb = new System.Text.StringBuilder(254);
 6         sb.AppendLine($"             {nameof(film_id)}: {film_id}");
 7         sb.AppendLine($"               {nameof(title)}: {title}");
 8         sb.AppendLine($"         {nameof(description)}: {description}");
 9         sb.AppendLine($"        {nameof(release_year)}: {release_year}");
10         sb.AppendLine($"         {nameof(language_id)}: {language_id}");
11         sb.AppendLine($"{nameof(original_language_id)}: {original_language_id}");
12         sb.AppendLine($"     {nameof(rental_duration)}: {rental_duration}");
13         sb.AppendLine($"         {nameof(rental_rate)}: {rental_rate}");
14         sb.AppendLine($"              {nameof(length)}: {length}");
15         sb.AppendLine($"    {nameof(replacement_cost)}: {replacement_cost}");
16         sb.AppendLine($"              {nameof(rating)}: {rating}");
17         sb.AppendLine($"    {nameof(special_features)}: {special_features}");
18         sb.AppendLine($"         {nameof(last_update)}: {last_update}");
19         sb.AppendLine($"            {nameof(language)}: {language}");
20         sb.AppendLine($"           {nameof(language1)}: {language1}");
21         return sb.ToString(0, sb.Length - 2);
22     }
23 }
复制代码

 

posted @   WalkingDie  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示