2011-04-28 6 views
6

En Java hemos utilizado el argumento javaagent y las utilidades ASM (http://asm.ow2.org/) para modificar el código de bytes al ejecutar/cargar el tiempo en la memoria por el cargador de clases. (también conocido como Agregar una llamada de método a un método en una clase de forma dinámica).Buscando una forma de manipular .Net CIL en tiempo de ejecución

Un ejemplo de esto es donde se eliminan todas las llamadas a Log4j para acelerar una aplicación (http://surguy.net/articles/removing-log-messages.xml).

Estoy tratando de averiguar cómo hacer este mismo proceso en tiempo de ejecución con C#/.Net. He visto que puedes manipular el CIL para .Net, pero no he encontrado un ejemplo de esto en tiempo de ejecución.

System.Reflection.Emit parece ser el .NET equitant más cercano donde se pueden crear clases dinámicamente, pero ¿hay alguna manera de agregar o anular las clases existentes usando esto?

Respuesta

1

Echa un vistazo a las características más recientes en .net 4, creo que la mayoría de lo que estás buscando está en el espacio de nombres System.Dynamic.

Control hacia fuera este mensaje el DuckTyping

0

Ha sido un tiempo desde que la miraba (yo soy más o menos un conejo Java) pero creo que el proyecto Mono tenía algo llamado Cecil, que hizo al menos algo de esto .

Cuestiones relacionadas