22 messaggi dal 14 maggio 2007
La Classe Button ha , tra le altre, una procedura denominata Dispose().
Queste viene dichiarata nell interfaccia IDisposable della Classe Control.

Fin qui tutto bene.

Esiste un modo per vedere la implementazionde della procedura Dispose(), praticamente il codice?
Se ho capito giusto, l´interfaccia dichiara solo una procedura o un evento o una proprieta´, queste devono poi essere implementate da qualche altra parte.

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
topomdc ha scritto:
Esiste un modo per vedere la implementazionde della procedura Dispose(), praticamente il codice?


Certo, con un reflector (o decompiler).

Fino a pochi mesi fa c'era un ottimo reflector gratuito, quello di RedGate, poi caduto in disgrazia nel momento in cui hanno rilasciato una nuova release a pagamento, al contempo facendo autodistruggere le vecchie versioni gratuite.

Di altri gratuiti conosco ILSpy, che è un po' acerbo però fa il suo lavoro.
Oppure, c'è quello di Telerik, JustDecompile, che sembra molto promettente anche se oggi è ancora una beta. Nel sito, hanno avuto cura di scrivere "Powerful, free decompiling FOREVER" come a rassicurare la community sul fatto che non incapperanno nella stessa défaillance di RedGate. Simpatici :)

Questi prodotti ti danno tutti la possibilità di cercare un tipo (es. Button) all'interno di un insieme di assembly. Quando il programma ti restituisce un risultato, fai doppioclick su di esso e potrai ispezionarlo. In particolare puoi conoscere:
- le classi da cui eredita e quelle che ereditano da esso;
- l'elenco dei suoi membri, come i campi, le proprietà e i metodi;
- il codice usato per implementare il .Dispose (o qualsiasi altro metodo). Il listato, di solito in C# o VB.NET, viene ottenuto "traducendo" il codice CIL contenuto negli assembly.

La differenza tra un reflector e l'Object Browser di Visual Studio sta proprio in quest'ultimo punto.


Se ho capito giusto, l'interfaccia dichiara solo una procedura o un evento o una proprietà, queste devono poi essere implementate da qualche altra parte.


Esatto. Col reflector puoi vedere che il tipo System.Web.UI.WebControls.Button eredita da WebControl che a sua volta eredita da Control. Quest'ultimo implementa l'interfaccia IDisposable, ed è lì che dovrai cercare l'implementazione del metodo Dispose.

Tutta questa "navigazione" tra i tipi la fai comodamente da un menu ad albero. Quando trovi il metodo .Dispose, fai doppioclick e ti apparirà il codice.

Il reflector è anche un ottimo strumento di apprendimento, è una finestra sull'implementazione del .net framework.

ciao,
Modificato da BrightSoul il 14 luglio 2011 20.02 -

Enjoy learning and just keep making
22 messaggi dal 14 maggio 2007
Grazie, molto chiaro ed esauriente.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.