Created
June 6, 2014 22:32
-
-
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#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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