Ho scritto un modulo logger/exceptionfactory, che utilizza System.Diagnostics.StackTrace, per ottenere attributi dai metodi di chiamata e dai loro tipi di dichiarazione. Tuttavia, ho notato che se eseguo il codice all'esterno di Visual Studio in modalità di rilascio, alcuni dei miei metodi più brevi risultano in linea e mancanti nella traccia dello stack. Ora non ho modo di testare se un metodo verrà ritorto in runtime, ma non voglio il metodo [MethodImpl(MethodImplOptions.NoInlining)]
ogni importante. Ma se un metodo delle mie classi base mancherà a causa di esso, posso interpretare erroneamente il livello e le informazioni sull'operazione e questo potrebbe portare a false log o eccezioni misparameterizzate.Stack Trace per l'accesso .NET
Esiste una regola empirica su cosa viene indicato dove e quando? I metodi virtuali, i metodi statici, i metodi della classe base sono trattati in modo diverso? Devo solo preoccuparmi di inlining all'interno dell'assemblaggio? All'interno dello spazio dei nomi?
possibile duplicato di [Quando è possibile che un metodo sia in linea con il CLR?] (Http://stackoverflow.com/questions/4660004/when-is-a-method- ammissibile-di-essere-infinito-di -the-clr) –