using System; using System.Text; using System.Reflection; namespace Recetas.Cap03 { public class CreacionStringBuilder { public static void Main() { // Invoca a `CrearStringBuilder` para recuperar una instancia // de StringBuilder: StringBuilder sb = CrearStringBuilder("Blog", 23); // Agrega cadena al inicio de la cadena original: sb.Append(" xCSw"); Console.WriteLine (sb.ToString()); } public static StringBuilder CrearStringBuilder(string cadenaInicial, int capacidadInicial) { // Representación Type de StringBuilder: Type repreType = typeof (StringBuilder); // Crea arreglo Type con la espeficiación de la firma // de parámetros de uno de los contructorese de StringBuilder: Type[] argsTipos = new Type[] { typeof (String), typeof(Int32)}; // Obtención de constructor sobre ConstructorInfo: ConstructorInfo ctorInfo = repreType.GetConstructor(argsTipos); // Especificación de los argumentos para el constructor: object[] valoresArgs = new object[] {cadenaInicial, capacidadInicial}; // Creación del objeto de `StringBuilder`: StringBuilder sb = (StringBuilder) ctorInfo.Invoke(valoresArgs); return sb; } } }