Skip to content

Instantly share code, notes, and snippets.

@JorTurFer
Last active June 24, 2019 19:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JorTurFer/be040b8342cacf7787b5a47b8273d51c to your computer and use it in GitHub Desktop.
Save JorTurFer/be040b8342cacf7787b5a47b8273d51c to your computer and use it in GitHub Desktop.
using System;
using System.Reflection;
namespace PostReflexion
{
class Program
{
static void Main(string[] args)
{
EjemploInformacionEnsamblado();
EjemploClaseDinamica();
Console.Read();
}
//===============Ejemplos sobre Assembly=================
//=======================================================
static void EjemploInformacionEnsamblado()
{
Console.WriteLine($"Información del ensamblado");
//var assembly = Assembly.LoadFile("ruta al fichero");
var assembly = Assembly.GetAssembly(typeof(Program));
Console.WriteLine("Nombre completo:");
Console.WriteLine(assembly.FullName);
// The AssemblyName type can be used to parse the full name.
AssemblyName assemName = assembly.GetName();
Console.WriteLine("\nNombre: {0}", assemName.Name);
Console.WriteLine("Versión: {0}.{1}",
assemName.Version.Major, assemName.Version.Minor);
Console.WriteLine("\nOrigen del código:");
Console.WriteLine(assembly.CodeBase);
Console.WriteLine("\nPunto de entrada:");
Console.WriteLine(assembly.EntryPoint);
Console.WriteLine();
}
static void EjemploClaseDinamica()
{
Console.WriteLine($"Clase dinámica");
//var assembly = Assembly.LoadFile("ruta al fichero");
var assembly = Assembly.GetAssembly(typeof(Program));
//Creamos el objeto de manera dinámica
var objetoDinamico = assembly.CreateInstance("PostReflexion.ClaseEjemplo", false,
BindingFlags.ExactBinding,
null, null, null, null);
// Creamos una referencia al método
var m = objetoDinamico.GetType().GetMethod("MetodoInversor");
//Llamamos al método pasandole el objeto creado dinámicamente y los argumentos dentro de un object[]
var ret = m.Invoke(objetoDinamico, new object[] { true });
Console.WriteLine($"El retorno de la función es: {ret}");
Console.WriteLine();
}
}
public class ClaseEjemplo
{
public bool MetodoInversor(bool input)
{
Console.WriteLine($"Llamada a {nameof(MetodoInversor)} con parámetro {input}");
return !input;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment