dicembre 2004 Blog Posts
Visto che ci sono parecchi “squilibrati che leggono il mio blog , voglio augurare a tutti quanti di passare un sereno Natale e, almeno per oggi, di non pensare a .NET ma dedicarsi a qualcosa di piu' “interessante” Qui dalle mie parti sta nevicando, quindi credo proprio che in questi giorni, impegni permettendo, mi dedichero' al testing del nuovo prodotto “NeveFresca .NET”Questo invece e' dedicato a chi ha figli... (credit to Giancarlo che me lo ha segnalato in tempi non sospetti...)
MSDN di gennaio 2005 riporta un articolo dedicato ai membri e classi statiche (Shared per i VB'ers...), a prima vista potrebbe sembrare superfluo, in realta' ci sono aspetti spesso sottovalutati che vale comunque la pena conoscere.Quale dei due snippets e' piu' performante?
public class A{private static string _a="ok"; public static string Text{get{return _a;}} }public class B{ private static string _a; static B () {_a="ok";} public string Text{get{return _a;}} }Perche' le eccezioni generate nei costruttori statici non vengono correttamente intercettate?, come funziona Reflection con le classi che ereditano da una classe statica?, come fa VB a implementare i membri statici nelle proprieta'/metodi? (e quali controindicazioni...
Come annunciato qui, e' disponibile la nuova CTP di Visual Studio 2005 Team Systems (che dovrebbe includere anche la parte server...)Sono 3.16 GB, buon download!
C# 2.0 mette a disposizione due nuove features:ContravarianceVi permette di passare ad un delegate un tipo che sta piu' in alto nella catena di ereditarieta' del tipo dichiarato nel delegate.CovariancePermette di far ritornare ad un delegate un tipo il quale eredita dal tipo definito nel delegate.public class A{ public static void Foo1(A param) { }}
public class B : A { public static void Foo2(B param) { } public static B CreateB() { return null; } } public class C : B { public static void Foo3(C param) { } public static C CreateC(){return null;} }
public delegate void Test(C param); public delegate B Test2();Test t = new Test(A.Foo1); //ContravarianceTest2 t2 = new Test2(C.CreateC); //CovarianceVB2005 non supporta Covariance...
Qualche dettaglio interessante relativo a Application.EnableVisualtyles , perche' e' necessario usare Application.Doevents() e perche', spesso, questo non e' sufficiente...
In attesa di Tiny CLR sembra che anche il mondo embedded si stia aprendo a .NET (anche se il tutto e', al momento ancora in beta...)
Tutti conoscono le Windows Forms FAQ, un po meno le Compact Framework FAQ ...
Sto analizzando la fattibilità di usare la PropertyGrid per editare degli oggetti la cui descrizione sta in un file XML.A parte la non immediata conversione di un oggetto da XML a "true" object (e qui prevedo parecchio CodeDomming...) mi sono ritrovato alcuni "dettagli" che la PropertyGrid e il meccanismo di reflection che la accompagna non consentono di realizzare in maniera semplice ed immediata.
Mostrare gli items secondo un ordine "custom" e non alfabetico o categorizzato
Modificare lo status di read-only di un item a runtime
Aggiungere un unità di misura al valore dell'item (es: 1.5 €)
Dopo varie analisi sono giunto alla soluzione...