반복문을 보관된 문자열로 표현할 수 있으면 참 좋을텐데요 다음의 메소드 확장으로 유사하게 사용할 수 있습니다.
public static class StringBuilderExtension
{
public static StringBuilder Foreach<T>(this IEnumerable<T> enumerable, Action<StringBuilder, T> funcCallback)
{
var result = new StringBuilder();
foreach (var item in enumerable)
{
funcCallback?.Invoke(result, item);
}
return result;
}
}
using System.Text;
var nums = new[] { 1, 2, 3, 4, 5 };
var result =
$@"nums {{
{nums.Foreach((s, n) => s.Append(n).Append(", "))}
}}";
Console.WriteLine(result);
public static class StringBuilderExtension
{
public static StringBuilder ForEach<T>(this IEnumerable<T> enumerable, Func<T, string> funcCallback)
{
var result = new StringBuilder();
foreach (var item in enumerable)
result.Append(funcCallback?.Invoke(item));
return result;
}
}
var result = $@"
namespace Autogen.Enum
{{
public static partial class EnumExtensions
{{{enumsToGenerate.ForEach(i1 => $@"
public static string ToStringFast(this {i1.Name} value) => value switch
{{{i1.Values.ForEach(i2 => $@"
{i1.Name}.{i2.Member} => {i2.Text},"
)}
_ => value.ToString(),
}};"
)}
}}
}}";