Domanda

Dati due tipi .Net, di tipo A e di tipo B, come si potrebbe determinare tutti i beni chiamate di tipo A (comprese le classi secondarie di tipo A) a base di tipo B?

È stato utile?

Soluzione

Dovreste trovare tutti i membri eseguibili (metodi, proprietà, eventi, costruttori) e chiamare MethodInfo.GetMethodBody per ottenere il grezzo iL. Poi analizzare che IL e potete trovare l'accesso alle proprietà. Non dimenticate di ottenere metodi virtuali dichiarati in classi di base pure.

Buona fortuna - ci vediamo in 6 mesi! Scherzi a parte, questo non sarà facile, e suona come un requisito insolito. Qual è il quadro più ampio qui?

Se non avete bisogno di fare questo in fase di esecuzione, ma vuole solo per vedere le dipendenze, si potrebbe scoprire che NDepend vi aiuterà. (Heck, forse NDepend espone un'API è possibile utilizzare per farlo a tempo di esecuzione -. La pena di verificare, suppongo)

Altri suggerimenti

Secondo questo blog Mono.Cecil vs. System.Reflection dal blog di Patrick Smacchia NDepend utilizza Mono.Cecil per analizzare le assemblee.

Forse potrebbe essere utile.

È possibile farlo usando le classi StackFrame e StackTrace, ma che è generalmente considerato una cattiva pratica.

La soluzione prevede l'analisi statica del codice - in sostanza siamo alla ricerca di dipendenze di tipo A a tipo B. Fuori dalla scatola le API di riflessione .NET possono solo prendere finora prima di avere a ricorrere alla analisi del IL - come Jon nota di sotto di questo non è da prendere alla leggera. Le risposte di seguito hanno portato ad un paio di librerie che possono aiutare, io saranno entrambi indagando:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top