Come sviluppatore professionista .NET, dovresti imparare a lavorare con MSIL usando la riflessione? [chiuso]

6

Leggevo il codice del nuovo Object Mapper SQL di StackOverflow . E ho notato nella parte inferiore del SqlMapper.cs ci sono alcuni codice che non avevo mai visto prima. Dopo aver letto parte della documentazione su MSDN e un tutorial su MSIL mi sembra un po 'strano.

Come sviluppatore professionista .NET (6 anni), dovrei investire del tempo per imparare questo? Qual è il vantaggio di comprendere ILGenerator ?

Spero di non confondere le cose e la domanda è chiara.

Grazie!

    
posta Peter 05.04.2011 - 08:45
fonte

3 risposte

5

Non posso scrivere MSIL, quindi tieni presente che la mia risposta sarebbe simile al cieco che guida il cieco:)

Detto questo, penso che potrebbe essere una domanda migliore per chiedere "Perché vorresti lavorare direttamente con MSIL"? Le risposte ti aiuteranno quindi a decidere se hai persino bisogno di preoccupartene.

Questa domanda fa un buon lavoro nel passare a quello che puoi fare in MSIL che non puoi fare in altri linguaggi .net - che è presumibilmente il motivo principale per cui potresti anche preoccuparti di MSIL. Se le cose elencate qui sono estranee a te, allora leggi prima questi argomenti. Raccomando anche di leggere CLR tramite C # di Jeffrey Richter se non l'hai già fatto. È sicuramente qualcosa che dovresti leggere (o avere familiarità con i concetti trattati) prima di preoccuparti di MSIL (lo fa in MSIL, e le cose che il CLR - e quindi MSIL ti permetteranno di fare quel C # no).

In conclusione, direi che ci sono molti prerequisiti per imparare a lavorare direttamente con MSIL, e quando avrai padroneggiato questi concetti saprai quando dovresti rompere il MSIL e impararlo / usarlo .

    
risposta data 05.04.2011 - 10:40
fonte
4

Sì, è meglio imparare MSIL, perché la generazione del codice è una tecnica di programmazione molto potente (probabilmente la più potente) e in .NET è davvero facile compilare un codice altamente efficiente dalle lingue specifiche del tuo dominio. Alcune delle funzionalità di IL non sono disponibili da C # (ad es. Chiamate di coda).

Inutile dire che aiuterà anche a capire meglio come funziona .NET. E non richiederà uno sforzo significativo per imparare, dato che .NET è una delle più semplici macchine virtuali in circolazione, è molto più semplice di, per esempio, JVM.

    
risposta data 05.04.2011 - 10:51
fonte
2

Attualmente sto lavorando con qualcosa chiamato Vista elenco oggetti . Parte della magia dietro a come funziona è che genera il codice IL al volo. Non l'ho mai incontrato prima, e ho lavorato con .NET per circa il tempo che hai.

Non posso dirvi cosa dovreste o non dovreste studiare da soli, ma questo è qualcosa che I sto pensando di imparare a fare da sola quest'estate.

    
risposta data 26.05.2011 - 01:23
fonte

Leggi altre domande sui tag