Articles of cil

Generar código de operación de cola

Por curiosidad, estaba tratando de generar un código de operación de llamada de cola usando C #. Fibinacci es fácil, así que mi ejemplo c # se ve así: private static void Main(string[] args) { Console.WriteLine(Fib(int.MaxValue, 0)); } public static int Fib(int i, int acc) { if (i == 0) { return acc; } return […]

Llamar y llamar

¿Cuál es la diferencia entre las instrucciones CIL “Llamar” y “Callvirt”?

Un desensamblador / decomstackdor .net

Estoy buscando un desensamblador o mejor, un descomstackdor para .net. La situación es que el código fuente de un ensamblaje escrito por uno de mis predecesores se perdió y me gustaría echarle un vistazo para ver qué está haciendo. Sé que ildasm viene con la instalación de Visual Studio para poder acceder al MSIL, pero […]

¿Reemplazar dinámicamente el contenido de un método de C #?

Lo que quiero hacer es cambiar la forma en que un método C # se ejecuta cuando se llama, de modo que pueda escribir algo como esto: [Distributed] public DTask Solve(int n, DEvent callback) { for (int m = 2; m < n – 1; m += 1) if (m % n == 0) return […]

Método del método FromEvent de propósito general

Usando el nuevo modelo async / await es bastante sencillo generar una Task que se completa cuando se activa un evento; solo necesitas seguir este patrón: public class MyClass { public event Action OnCompletion; } public static Task FromEvent(MyClass obj) { TaskCompletionSource tcs = new TaskCompletionSource(); obj.OnCompletion += () => { tcs.SetResult(null); }; return tcs.Task; […]