Passa ai contenuti principali

Post

Visualizzazione dei post da Maggio, 2010

Serializzare oggetti in stile ViewState ASP.NET

Il ViewState è una delle componenti che caratterizzano le pagine ASP.NET rispetto al resto del panorama per lo sviluppo web.Il view state è un modo per poter mantenere lo stato dei controlli (e non solo) di una pagina tra un post-back ed il successivo.Se apriamo l’HTML generato da una pagina ASP.NET possiamo vedere che il ViewState viene salvato in un apposito campo nascosto (chiamato __VIEWSTATE): Il valore del viewstate (ovvero la stringa con tutti i caratteri “strani”) è ottenuta comprimendo e serializzando tutte le proprietà dei controlli (per i quali è attivo il view state).Possiamo utilizzare questo tipo di serializzazione anche nelle nostre applicazioni (non ASP.NET) utilizzando la classe ObjectStateFormatter (contenuta nel namespace System.Web.UI all’interno dell’assembly System.Web.dll).Per serializzare un nostro oggetto in una stringa possiamo utilizzare la sintassi seguente: 1:Dim customer = New Customer With {.FirstName = "Massimo", _


2: …

I-Memo finalmente un interessante prodotto tutto italiano

Mi hanno fatto conoscere un prodotto creato e realizzato da una giovane azienda lucana che permette di memorizzare username e password proteggendole con l’impronta digitale.Il prodotto si chiama I-Memo e maggiori info sono disponibili sul sito http://www.menstecnica.com/index.html.Una volta tanto l’ingegno italiano ha prodotto un qualcosa che potrebbe essere utile.Technorati Tag: ,

On-line la nuova community romana DomusDotNet

E’ finalmente on-line la nuova community romana (e laziale) sulle tecnologie basate sul framework .NET di Microsoft.Il portale della community è raggiungibile all’indirizzo http://www.domusdotnet.org. Troverete articoli, tips & tricks, recensioni su tools e servizi, notizie e molto altro.Technorati Tag: ,,

Nascondere proprietà e campi nella maschera di controllo del debug

In questo post vorrei segnalarvi l’attributo DebuggerBrowsable per nascondere proprietà e attributi di una nostra classe nella finestra di controllo del debug.L’attributo DebuggerBrowsable può essere applicato ad una proprietà o ad un campo e permette di nascondere la proprietà o il campo nella finestra di debug.Ad esempio, prendiamo la classe:
PublicClassClass1PublicProperty VisibleProperty AsString    <Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never)>PublicProperty InvisibleProperty AsStringEndClass La proprietà InvisibleProperty, pur essendo pubblica, non sarà visualizzata nella finestra di debug:Technorati Tag: ,,,

Evitare il debug all’interno di metodi o proprietà: DebuggerHiddenAttribute e DebuggerStepThroughAttribute

Gli attributi che analizzeremo in questo post servono per evitare che si possa eseguire debug all’interno di metodi o proprietà delle nostre classi. Appartengono entrambi al namespace System.Diagnostics.DebuggerHiddenAttributeL’attributo DebuggerHidden permette di “nascondere” un costruttore, un metodo o una proprietà. Decorando un membro dei precedenti con questo attributo facciamo si che quando si esegue il debug non si possa eseguire uno step-into all’interno del metodo o fermarsi in un breakpoint interno al metodo stesso.Un esempio di utilizzo dell’attributo è il seguente:
PublicClassClass1PublicFunction NotHiddenMethod() AsBooleanReturnTrueEndFunction    <Diagnostics.DebuggerHidden()> _PublicFunction HiddenMethod() AsBooleanReturnTrueEndFunctionEndClass Di fatto, il metodo HiddenMethod non può essere debuggato né utilizzando lo step-into né inserendo un breakpoint all’interno (per la cronaca l’ambiente di sviluppo permette di inserire il breakpoint ma questo non è attivo).…

Personalizzare il tooltip di debug di Visual Studio

Quando eseguiamo il debug di una applicazione utilizzando Visual Studio, nel momento in cui con il mouse passiamo al di sopra di una variabile, ci appare un tooltip che permette di analizzare il contenuto della variabile stessa.L’attributo DebuggerDisplay ci permette di personalizzare come apparirà questo tooltip. Supponiamo di avere la classe Employee:
PublicClassEmployeePublicProperty LastName AsStringPublicProperty FirstName AsStringEndClass E di voler eseguire il debug di una semplice applicazione console:Il tooltip che ci permette di vedere i valori assunti dalla variabile employee ci dice che la variabile è di tipo Employee e ci obbliga ad aprire l’albero delle proprietà per vedere il contenuto della stessa.Un modo per ovviare a questo e visualizzare una stringa che indichi il contenuto della variabile è implementare l’override del metodo ToString(). Questo fatto ci obbliga, però, ad utilizzare un metodo che è, di solito, utilizzato per scopi applicativi (ad esempio per mostrar…

L’utilizzo della classe ConditionalAttribute per evitare l’esecuzione di metodi

L’attributo ConditionaAttribute (contenuto nel namespace System.Diagnostics, assembly mscorlib.dll) ci consente di includere (o escludere) metodi dal flusso di esecuzione in base alla presenza o meno di una costante di compilazione.Ad esempio, supponiamo di avere la seguente applicazione console:
ModuleModule1Sub Main()Console.WriteLine("Console start")        WriteLog()Console.WriteLine("Console end")EndSub    <Diagnostics.Conditional("LOG")>PrivateSub WriteLog()Console.WriteLine("WriteLog")EndSubEndModule Se non definiamo la costante di compilazione LOG, il codice che viene compilato è il seguente:Come si può osservare, il corpo del metodo decorato con l’attributo ConditionalAttribute è stato compilato ma non è stata inserita la chiamata allo stesso che si sarebbe dovuta trovare tra le due istruzioni Console.WriteLine del Main. Questo significa che, quando eseguiamo, ad esempio, il debug della nostra applicazione, vedremo il punto di es…