Quando è methodbase.getCurrentMethod affidabile / prevedibile?
Domanda
Un metodo potrebbe essere inlineato; C'è un attributo per prevenirlo ("c'è un ATT per quello"). Tuttavia, apparentemente un metodo potrebbe anche non ottenere il proprio telaio di stack su X64 a causa dell'ottimizzazione della chiamata di coda da parte del jitter (http://www.hanselman.com/blog/releaseisnotdebug64bittoptimizationsandcmethodinlininginreleasebuildcallstacks.aspx). Ciò influirebbe sul comportamento di MethodBase.GetCurrentMethod
?
Le discussioni che posso trovare riguardano principalmente in linea (Quando è idoneo un metodo per essere inlineato dal CLR?). Mentre quelle discussioni sono interessanti a sé stanti, il mio problema riguarda davvero quali circostanze - se presenti - MethodBase.GetCurrentMethod
può essere affidato a identificare lo stesso metodo in cui il programmatore ha effettuato la chiamata (ad esempio, per l'associazione tardiva a un metodo per il quale il metodo corrente è in realtà un surrogato). In linea è un modo MethodBase.GetCurrentMethod
Potrebbe essere ingannato, ma mi chiedo se sia l'unico modo?
Nessuna soluzione corretta