Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 6, 2014 22:32
Show Gist options
  • Save Fhernd/68277029629de555885a to your computer and use it in GitHub Desktop.
Save Fhernd/68277029629de555885a to your computer and use it in GitHub Desktop.
Reflection para la creación de una instancia de Strinbuilder en tiempo de ejecución en C#.
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;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment