Pregunta

Dados dos tipos .Net, tipo A y tipo B, ¿cómo se podría determinar todas las propiedades llamadas al tipo A (incluyendo las subclases del tipo A) a base de tipo B?

¿Fue útil?

Solución

Si tienes que encontrar todos los miembros ejecutables (métodos, propiedades, eventos, constructores) y llama a MethodInfo.GetMethodBody para obtener la prima IL. A continuación, analizar que la IL y buscar el acceso a las propiedades. No se olvide de obtener métodos virtuales declarados en las clases de base también.

Buena suerte - nos vemos en 6 meses! En serio, esto no va a ser fácil, y suena como un requisito inusual. ¿Cuál es la imagen más grande aquí?

Si usted no necesita hacer esto en tiempo de ejecución, pero que desea es ver las dependencias, es posible que NDepend le ayudará. (Heck, tal vez NDepend expone una API que puede utilizar para hacerlo en tiempo de ejecución -. Vale la pena mirar, supongo)

Otros consejos

De acuerdo con esta entrada de blog Mono.Cecil vs System.Reflection del blog de Patrick Smacchia NDepend utiliza Mono.Cecil para analizar asambleas.

Tal vez podría ser útil.

Puede hacer que el uso de las clases StackFrame y StackTrace, pero que se considera generalmente que es una mala práctica.

La solución consiste en el análisis estático del código - en esencia estamos buscando dependencias de tipo A en el tipo B. Fuera de la caja de la API de reflexión .Net única que puede tomar hasta el momento antes de tener que recurrir al análisis de la IL - como Jon observa por debajo de este no debe ser tomada a la ligera. Las respuestas a continuación han conducido a un par de bibliotecas que pueden ayudar, se investigan los dos:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top