Last active
June 24, 2019 19:23
-
-
Save JorTurFer/be040b8342cacf7787b5a47b8273d51c to your computer and use it in GitHub Desktop.
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.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