with property net method c# reflection

net - propertyinfo c#



Cómo usar la reflexión para crear una "máquina de reflexión" (4)

Intenta mirar Crack.NET . Se usa para manipular e interrogar en tiempo de ejecución en WPF / WinForms, pero la fuente está disponible y podría ser un buen comienzo si ya no satisface sus necesidades.

De acuerdo, el título apesta un poco, pero no se me ocurrió nada mejor (¿alguien más puede hacerlo?).

Así que tengo algunas preguntas sobre un tema aquí. Lo que quiero hacer es crear un programa que pueda tomar un objeto y usar el reflejo para enumerar todas sus propiedades, métodos, constructores, etc. Luego puedo manipular estos objetos en tiempo de ejecución para probar, depurar y descubrir exactamente qué algunas de mis clases / los programas están funcionando mientras se están ejecutando (algunos de ellos serán servicios de Windows y quizás estén instalados en la máquina en lugar de ejecutarse en depuración desde VS).

Así que proporcionaría un enlace al programa que desde la máquina local (solo) este programa podría obtener una instancia del objeto principal y, por lo tanto, ver todos los sub objetos que se ejecutan en él. (para la seguridad, el programa puede necesitar iniciarse con un arg para exponer ese enlace).

La "máquina de reflexión" permitiría la manipulación e interrogación en tiempo de ejecución.

¿Esto suena posible?

¿Tendría que proporcionar el programa un gancho o podría la "máquina de reflexión" tomar un EXE y (si supiera todas las clases que estaba usando), crear un objeto para usar?

Sé que puede importar archivos DLL en tiempo de ejecución para que sepa todo tipo de clases, pero ¿puede importar clases individuales? IE Diga que tengo el proyecto ''Y'' que no está compilado en una DLL pero quiero usar la "máquina de reflexión" en él, ¿puedo apuntar a ese directorio y tomar los archivos para poder hacer referencia a esas clases?

EDITAR: Me encantaría intentarlo y desarrollarlo solo, pero ya tengo una larga lista de proyectos que me gustaría hacer y que ya he comenzado. ¿Por qué reinventar la rueda cuando ya hay una gran selección para elegir?


Powershell en realidad hace casi todo esto, si entiendo correctamente lo que estás diciendo.


Suena como si el Hawkeye de Corneliu Tusnea pudiera estar cerca de lo que estás buscando en el tiempo de ejecución de los objetos / propiedades / etc. Él lo llama el .NET Runtime Object Editor. No estoy seguro de si la página principal a la que me he vinculado anteriormente o el proyecto CodePlex es el mejor lugar para comenzar.

Creo que ahora está un poco desactualizado, pero hay una versión anterior en CodeProject donde se puede ver el código fuente de cómo y qué hizo.


Vea esta respuesta sobre cómo construir un "motor de reflexión".

Todo lo que necesita hacer es dejar ese conjunto de maquinaria en su conjunto de bibliotecas de tiempo de ejecución disponibles y hace lo que quiere, creo. (Puede que no sea tan fácil como lo he hecho sonar en la práctica).

Supongo que también querrá un compilador en tiempo de ejecución, para que pueda fabricar variantes instrumentadas / transformadas del programa bajo inspección para recopilar los datos de tiempo de ejecución que desee. Es posible que dicha maquinaria proporcione resultados de análisis estáticos que le permitan evitar realizar el análisis de tiempo de ejecución en muchos casos.