Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Please referance PresentationCore for Clipboard functionality!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace GenericFunctionElongator
- {
- class Program
- {
- [STAThread]
- static void Main(string[] args)
- {
- var sb = new StringBuilder();
- string methodName = "public Message AddField";
- string header = "";
- string bodyFormat = "AddField<{0}> ({1});";
- string tail = "return this;";
- for (int i = 2; i < 9; i++)
- {
- var types = Enumerable.Range(1, i).Select(t => "T" + t).ToArray();
- sb.AppendFormat("{0}<{1}>({2})\n",
- methodName,
- string.Join(", ", types),
- string.Join(", ", types.Select(t => t + " " + t.ToLower())));
- sb.AppendLine("{");
- if (!string.IsNullOrWhiteSpace(header)) sb.AppendLine("\t"+header);
- foreach (var t in types) sb.AppendFormat("\t" + bodyFormat, t, t.ToLower()).AppendLine();
- if (!string.IsNullOrWhiteSpace(tail)) sb.AppendLine("\t" + tail);
- sb.AppendLine("}\n");
- }
- Console.WriteLine(sb);
- Clipboard.SetText(sb.ToString());
- Console.ReadLine();
- }
- }
- }
- //Example output:
- public Message AddField<T1, T2>(T1 t1, T2 t2)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- return this;
- }
- public Message AddField<T1, T2, T3>(T1 t1, T2 t2, T3 t3)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- AddField<T3> (t3);
- return this;
- }
- public Message AddField<T1, T2, T3, T4>(T1 t1, T2 t2, T3 t3, T4 t4)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- AddField<T3> (t3);
- AddField<T4> (t4);
- return this;
- }
- public Message AddField<T1, T2, T3, T4, T5>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- AddField<T3> (t3);
- AddField<T4> (t4);
- AddField<T5> (t5);
- return this;
- }
- public Message AddField<T1, T2, T3, T4, T5, T6>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- AddField<T3> (t3);
- AddField<T4> (t4);
- AddField<T5> (t5);
- AddField<T6> (t6);
- return this;
- }
- public Message AddField<T1, T2, T3, T4, T5, T6, T7>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- AddField<T3> (t3);
- AddField<T4> (t4);
- AddField<T5> (t5);
- AddField<T6> (t6);
- AddField<T7> (t7);
- return this;
- }
- public Message AddField<T1, T2, T3, T4, T5, T6, T7, T8>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
- {
- AddField<T1> (t1);
- AddField<T2> (t2);
- AddField<T3> (t3);
- AddField<T4> (t4);
- AddField<T5> (t5);
- AddField<T6> (t6);
- AddField<T7> (t7);
- AddField<T8> (t8);
- return this;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement