Advertisement
NPSF3000

Generic Function Elongator

Apr 4th, 2013
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.85 KB | None | 0 0
  1. //Please referance PresentationCore for Clipboard functionality!
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8.  
  9. namespace GenericFunctionElongator
  10. {
  11.     class Program
  12.     {
  13.         [STAThread]
  14.         static void Main(string[] args)
  15.         {
  16.             var sb = new StringBuilder();
  17.             string methodName = "public Message AddField";
  18.             string header = "";
  19.             string bodyFormat = "AddField<{0}> ({1});";
  20.             string tail = "return this;";
  21.             for (int i = 2; i < 9; i++)
  22.             {
  23.                 var types = Enumerable.Range(1, i).Select(t => "T" + t).ToArray();
  24.                 sb.AppendFormat("{0}<{1}>({2})\n",
  25.                     methodName,
  26.                     string.Join(", ", types),
  27.                     string.Join(", ", types.Select(t => t + " " + t.ToLower())));
  28.                 sb.AppendLine("{");
  29.                 if (!string.IsNullOrWhiteSpace(header)) sb.AppendLine("\t"+header);
  30.                 foreach (var t in types) sb.AppendFormat("\t" + bodyFormat, t, t.ToLower()).AppendLine();
  31.                 if (!string.IsNullOrWhiteSpace(tail)) sb.AppendLine("\t" + tail);
  32.                 sb.AppendLine("}\n");
  33.             }
  34.             Console.WriteLine(sb);
  35.             Clipboard.SetText(sb.ToString());
  36.             Console.ReadLine();
  37.         }
  38.     }
  39. }
  40.  
  41. //Example output:
  42.  
  43. public Message AddField<T1, T2>(T1 t1, T2 t2)
  44. {
  45.     AddField<T1> (t1);
  46.     AddField<T2> (t2);
  47.     return this;
  48. }
  49.  
  50. public Message AddField<T1, T2, T3>(T1 t1, T2 t2, T3 t3)
  51. {
  52.     AddField<T1> (t1);
  53.     AddField<T2> (t2);
  54.     AddField<T3> (t3);
  55.     return this;
  56. }
  57.  
  58. public Message AddField<T1, T2, T3, T4>(T1 t1, T2 t2, T3 t3, T4 t4)
  59. {
  60.     AddField<T1> (t1);
  61.     AddField<T2> (t2);
  62.     AddField<T3> (t3);
  63.     AddField<T4> (t4);
  64.     return this;
  65. }
  66.  
  67. public Message AddField<T1, T2, T3, T4, T5>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
  68. {
  69.     AddField<T1> (t1);
  70.     AddField<T2> (t2);
  71.     AddField<T3> (t3);
  72.     AddField<T4> (t4);
  73.     AddField<T5> (t5);
  74.     return this;
  75. }
  76.  
  77. public Message AddField<T1, T2, T3, T4, T5, T6>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
  78. {
  79.     AddField<T1> (t1);
  80.     AddField<T2> (t2);
  81.     AddField<T3> (t3);
  82.     AddField<T4> (t4);
  83.     AddField<T5> (t5);
  84.     AddField<T6> (t6);
  85.     return this;
  86. }
  87.  
  88. public Message AddField<T1, T2, T3, T4, T5, T6, T7>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
  89. {
  90.     AddField<T1> (t1);
  91.     AddField<T2> (t2);
  92.     AddField<T3> (t3);
  93.     AddField<T4> (t4);
  94.     AddField<T5> (t5);
  95.     AddField<T6> (t6);
  96.     AddField<T7> (t7);
  97.     return this;
  98. }
  99.  
  100. 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)
  101. {
  102.     AddField<T1> (t1);
  103.     AddField<T2> (t2);
  104.     AddField<T3> (t3);
  105.     AddField<T4> (t4);
  106.     AddField<T5> (t5);
  107.     AddField<T6> (t6);
  108.     AddField<T7> (t7);
  109.     AddField<T8> (t8);
  110.     return this;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement