.NET Framework 3.5

LINQ – Variabili temporanee con la parola chiave Let

L’uso di LINQ apre davvero a scenari molto molto interessanti grazie alla sua potenza e flessibilità. Oggi ho scoperto che in una query LINQ è possibile costruire una variabile temporanea ed utilizzarla successivamente nella esposizione del risultato della query. Ecco un esempio: 1: List<int> prices = new List<int>() { 1500, 3000, 4000, 8000 }; 2: var query = from p in prices 3: let discount = p * 0.10 ...

posted @ Friday, September 03, 2010 5:58 PM | Feedback (0)

Object Identity / Equality

E’ noto che il metodo virtuale Equals ereditato da ogni oggetto dalla classe System.Object permette di definire un criterio di uguaglianza tra due oggetti non basato esclusivamente sulla reference (ovvero 2 oggetti sono uguali se puntano alla stessa istanza di un determinato oggetto). E’ altresì noto che ridefinendo il metodo Equals siamo costretti a ridefinire il metodo GetHashCode per far si che in presenza di 2 oggetti uguali (Equals che ritorna true), il metodo GetHashCode ritorni lo stesso valore di hash per i 2 oggetti, questo perchè l’oggetto in questione potrebbe essere usato come chiave in una collezione di...

posted @ Tuesday, May 04, 2010 5:03 AM | Feedback (0)

Raccolta extension methods

Gli extension methods sono una feature estremamente potente ed interessante, introdotta a partire dal .Net Framework 3.5 SP1. A tal proposito, su Codeplex è presente un interessantissima libreria di codice che raccoglie extension methods applicati a svariati tipi. Davvero molto molto utile. Come detto qui da Gianluca Carucci, questa feature non necessita necessariamente della versione 3.5 del .Net Framework per essere utilizzata, ma, con un piccolo accorgimento, è possibile sfruttarne a pieno le potenzialità utilizzando anche il .Net Framework 2.0. Pertanto, nella pagina Codeplex sopra citata, i “requirements” sono errati.

posted @ Tuesday, April 13, 2010 8:56 PM | Feedback (0)

Link utili della settimana #1

- MVVM Toolkit Light - Ajax Control Toolkit release 30930 (30 sett 2009); -thinktecture.WSCF.blue (Contract first WCF Tool) - The ModelView-ViewModel design pattern for WPF - Code Run (questo è davvero incredibile, si evincono chiaramente le potenzialità del Cloud Computing).  Trattasi di un IDE Online, con cui è possibile sviluppare progetti .NET direttamente nel browser, potendo anche disporre di un ambiente di host on the cloud, su cui è possibile effettuare il deployment delle proprie applicazioni sviluppate on line. - Bonnie .NET API per sviluppare applicazioni che usano la crittografia della informazioni o certificati X.509

posted @ Friday, October 09, 2009 5:50 AM | Feedback (0)

Come ottenere il nome del metodo chiamante dallo stack usando reflection

Cosi: 1: using System.Diagnostics; 2: void Log(string eventMessage) 3: { 4: Console.WriteLine("Event logged by " + (new StackTrace()).GetFrame(1).GetMethod().Name); 5: Console.WriteLine("Event: " + eventMessage); 6: } 7:    Fonte: Tips & Tricks for ASP.NET, IIS, and Visual Web Developer 

posted @ Friday, August 14, 2009 7:41 AM | Feedback (0)

Invocazione di store procedure oracle in .NET

Il Data Access Application Block, contenuto all'interno della Enterprise Library 4.1 consente di richiamare store procedures passando esclusivamente il valore dei singoli parametri richiesti (mediante l'utilizzo del metodo GetStorepProcCommand dell'oggetto DatabaseFactory), nello stesso ordine con cui questi sono espressi nella firma della procedura. Poichè ADO .NET richiede comunque che ogni informazione in merito ai parametri della store sia obbligatoria (quindi tipo di dato, dimensione, precisione, scala, ecc), il metodo effettua internamente una chiamata al metodo DeriveParameters di ADO .NET che, attraverso un round-trip al database server, consente di recuperare tutte le informazioni necessarie sui parametri. Poichè come detto, questa chiamata...

posted @ Monday, February 16, 2009 8:50 AM | Feedback (0)

Le direttive using devono essere poste all'interno del namespace

Questo post inizia con una frase tratta da un post di Scott Hanselmann con cui mi trovo completamente d'accordo: Don't believe everything you read, even on a Microsoft Blog.              Don't believe this blog, either!                                                           Decide  for yourself with experiments if you need a tiebreaker! Credo sia proprio vero, mai fidarsi ciecamente di quello che si legge in giro, soprattutto quando seri dubbi farebbero pensare il contrario. Il motivo è presto detto: utilizzo normalmente FxCop come strumento di analisi del codice sorgente, lo trovo molto completo e ben fatto. Spinto dalla curiosità ho voluto...

posted @ Tuesday, July 22, 2008 10:59 AM | Feedback (0)

Automatic properties in c# 3.0

Utilizzando C# 3.0 è possibile scrivere le proprietà di una classe in modo estremamente compatto, in questo modo: Public string Nome {get; set;} Questa modalità, chiamata "Automatic properties" permette quindi di omettere il riferimento al membro privato che normalmente viene "wrappato" dalla proprietà stessa. Sarà compito del compilatore autogenerare al volo il membro privato al momento della compilazione. Questa caratteristica impone che il codice della classe non può in nessun modo accedere alla variabile privata, appunto perchè al momento della stesura del codice essa non esiste ancora in quanto sarà autogenerata in fase di compilazione. E' quindi necessario utilizzare direttamente...

posted @ Sunday, July 20, 2008 5:27 PM | Feedback (0)

Extentions Methods, come crearli

Una delle più interessanti feature disponibili con la versione 3.5 del .NET Framework sono, a mio avviso, gli Extention Methods, caratteristica legata al linguaggio di programmazione che permette di aggiungere metodi personalizzati a qualsiasi classe/interfaccia del .NET Framework, incluse le classi usate come classi di base (un esempio per tutte: la classe object),  "estendendo" appunto il tipo originale. In tal modo è possibile estendere il contratto pubblico  esposto dalla classe /interfaccia senza per questo ricorrere all'ereditarietà. Utilizzando invece quest'ultima tecnica si era limitati alle solo classi ereditabili (non dichiarate "sealed", come ad esempio la classe System.String), e soprattutto si correva...

posted @ Tuesday, May 13, 2008 1:32 PM | Feedback (0)

101 LINQ Samples

Se lavorate con LINQ, questa pagina è utile averla sempre a portata di mouse.  101 LINQ Samples

posted @ Wednesday, April 23, 2008 12:51 PM | Feedback (0)