Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Text;
  3. using System.Reflection;
  4.  
  5. namespace Recetas.Cap03
  6. {
  7.     public class CreacionStringBuilder
  8.     {
  9.         public static void Main()
  10.         {
  11.             // Invoca a `CrearStringBuilder` para recuperar una instancia
  12.             // de StringBuilder:
  13.             StringBuilder sb = CrearStringBuilder("Blog", 23);
  14.            
  15.             // Agrega cadena al inicio de la cadena original:
  16.             sb.Append(" xCSw");
  17.            
  18.             Console.WriteLine (sb.ToString());
  19.            
  20.         }
  21.    
  22.         public static StringBuilder CrearStringBuilder(string cadenaInicial, int capacidadInicial)
  23.         {
  24.             // Representación Type de StringBuilder:
  25.             Type repreType = typeof (StringBuilder);
  26.            
  27.             // Crea arreglo Type con la espeficiación de la firma
  28.             // de parámetros de uno de los contructorese de StringBuilder:
  29.             Type[] argsTipos = new Type[] { typeof (String), typeof(Int32)};
  30.            
  31.             // Obtención de constructor sobre ConstructorInfo:
  32.             ConstructorInfo ctorInfo = repreType.GetConstructor(argsTipos);
  33.            
  34.             // Especificación de los argumentos para el constructor:
  35.             object[] valoresArgs = new object[] {cadenaInicial, capacidadInicial};
  36.            
  37.             // Creación del objeto de `StringBuilder`:
  38.             StringBuilder sb = (StringBuilder) ctorInfo.Invoke(valoresArgs);
  39.            
  40.             return sb;
  41.         }
  42.     }
  43. }