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;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CgpuYW1lc3BhY2UgUmVjZXRhcy5DYXAwMwp7CglwdWJsaWMgY2xhc3MgQ3JlYWNpb25TdHJpbmdCdWlsZGVyCgl7CgkJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJCXsKCQkJLy8gSW52b2NhIGEgYENyZWFyU3RyaW5nQnVpbGRlcmAgcGFyYSByZWN1cGVyYXIgdW5hIGluc3RhbmNpYSAKCQkJLy8gZGUgU3RyaW5nQnVpbGRlcjoKCQkJU3RyaW5nQnVpbGRlciBzYiA9IENyZWFyU3RyaW5nQnVpbGRlcigiQmxvZyIsIDIzKTsKCQkJCgkJCS8vIEFncmVnYSBjYWRlbmEgYWwgaW5pY2lvIGRlIGxhIGNhZGVuYSBvcmlnaW5hbDoKCQkJc2IuQXBwZW5kKCIgeENTdyIpOwoJCQkKCQkJQ29uc29sZS5Xcml0ZUxpbmUgKHNiLlRvU3RyaW5nKCkpOwoJCQkKCQl9CgkKCQlwdWJsaWMgc3RhdGljIFN0cmluZ0J1aWxkZXIgQ3JlYXJTdHJpbmdCdWlsZGVyKHN0cmluZyBjYWRlbmFJbmljaWFsLCBpbnQgY2FwYWNpZGFkSW5pY2lhbCkKCQl7CgkJCS8vIFJlcHJlc2VudGFjacOzbiBUeXBlIGRlIFN0cmluZ0J1aWxkZXI6CgkJCVR5cGUgcmVwcmVUeXBlID0gdHlwZW9mIChTdHJpbmdCdWlsZGVyKTsKCQkJCgkJCS8vIENyZWEgYXJyZWdsbyBUeXBlIGNvbiBsYSBlc3BlZmljaWFjacOzbiBkZSBsYSBmaXJtYSAKCQkJLy8gZGUgcGFyw6FtZXRyb3MgZGUgdW5vIGRlIGxvcyBjb250cnVjdG9yZXNlIGRlIFN0cmluZ0J1aWxkZXI6CgkJCVR5cGVbXSBhcmdzVGlwb3MgPSBuZXcgVHlwZVtdIHsgdHlwZW9mIChTdHJpbmcpLCB0eXBlb2YoSW50MzIpfTsKCQkJCgkJCS8vIE9idGVuY2nDs24gZGUgY29uc3RydWN0b3Igc29icmUgQ29uc3RydWN0b3JJbmZvOgoJCQlDb25zdHJ1Y3RvckluZm8gY3RvckluZm8gPSByZXByZVR5cGUuR2V0Q29uc3RydWN0b3IoYXJnc1RpcG9zKTsKCQkJCgkJCS8vIEVzcGVjaWZpY2FjacOzbiBkZSBsb3MgYXJndW1lbnRvcyBwYXJhIGVsIGNvbnN0cnVjdG9yOgoJCQlvYmplY3RbXSB2YWxvcmVzQXJncyA9IG5ldyBvYmplY3RbXSB7Y2FkZW5hSW5pY2lhbCwgY2FwYWNpZGFkSW5pY2lhbH07CgkJCQoJCQkvLyBDcmVhY2nDs24gZGVsIG9iamV0byBkZSBgU3RyaW5nQnVpbGRlcmA6CgkJCVN0cmluZ0J1aWxkZXIgc2IgPSAoU3RyaW5nQnVpbGRlcikgY3RvckluZm8uSW52b2tlKHZhbG9yZXNBcmdzKTsKCQkJCgkJCXJldHVybiBzYjsKCQl9Cgl9Cn0=