Revisione degli articoli sulle riflessioni:
Informazioni sulla recensione EMIT:
Per prima cosa, crea un oggetto semplice, istanzia l'oggetto e usa emit ed expression per leggere e modificare il valore dell'oggetto, e puoi vedere che il risultato di esecuzione è quello previsto, come mostrato nella figura sottostante:
Benchmark usando BenchmarkDotNet per il benchmarking, leggendo solo i valori degli oggetti per i test, eseguito su Net472 e NetCoreApp31, i risultati del test sono i seguenti:
Sommario:
Sia emit che expression sono più efficienti rispetto all'uso della riflessione per ottenere valori, e nel framework .NET 4.7.2, emit è migliore dell'efficienza nell'esecuzione delle espressioni, ma nel framework .NET Core 3.1, l'espressione è migliore dell'esecuzione emit.
Se il tuo programma deve eseguire dinamicamente un oggetto una sola volta, si consiglia di usare la riflessione (dopotutto, non è necessario incapsulare di nuovo o creare un delegato), e se il programma deve eseguire dinamicamente un oggetto più volte, si consiglia di usare emit o expression, e ovviamente è richiesta un'ulteriore incapsulazione.
Il codice di prova è il seguente:
Quando si usano Espressione per ottenere i valori dell'oggetto, l'errore verrà segnalato come segue:
L'espressione del tipo 'System.Int32' non può essere usata per il tipo di ritorno 'System.Object' Davvero non so come lo usino queste persone, sanno solo copiare e incollare!
|