Roslyn+T4+EnvDTE项目完全自动化(5) ——自动生成ToString方法
(视频演示)
resharper 的Refactor生成 ToString在某些场景,很不方便,无法批量生成,无法从特性、注释获取,自己用Roslyn重新写一个解决这些问题
需求:批量生成ToString方法
- 对类自动生成ToString方法
- 支持插值、StringBuilder输出
- 文字描述从特性、注释获取
- 支持nameof
- 自动对齐
- 可以自动翻译字段
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 }