agosto 2005 Blog Posts

Stranezze di VB.NET...

Tutto e' nato cercando di capire come mai questo codice in C# non funziona se convertito in VB.NET:        struct test        {            public int x;        }         static void Main(string[] args)        {            test t = new test();            t.x = 12;            FieldInfo fi = t.GetType().GetField("x");            object o = t;            fi.SetValue(o, 12);            t = (test)o;            Console.WriteLine(t.x); //12        }il quale non fa altro che settare il campo x della struttura test via reflection...L'equivalente VB e' il seguente, e _non_ funziona:    Public Structure test        Public x As Int32    End Structure     Sub Main()        Dim t As New test        Dim fi As FieldInfo = t.GetType().GetField("x")        Dim o As...

posted @ martedì 30 agosto 2005 01:22 | Feedback (10)

Whidbey Watcher #48: Friend assemblies (reloaded)

Tempo fa ho bloggato di friend assemblies e dell'attributo InternalVisibleTo, oggi un utente mi segnala che con la Beta2 l'attributo sembra non funzionare in VB 2005, ammetto che per i test fatti in precedenza avevo usato esclusivamente C# ma la cosa mi suonava comunque strana quindi decido di fare una prova veloce usando la CTP di Agosto.Risultato: Non funziona piu' nulla... ne in VB tantomeno in C#...Convinto di essere in preda all'ennesimo attacco di arteriosclerosi fulminante, mi affido a San Google e cosa scopro in questo blog?  (BTW: W i blog!)“Post beta2 one more restriction is added.Only name + publicKey combination...

posted @ lunedì 22 agosto 2005 20:47 | Feedback (1)

Whidbey Watcher #47: Bye Bye INullableValue

Dopo avere installato la CTP di Agosto ho dato un occhiata alle ultime importanti modifiche introdotte nel CLR annunciate da “Soma” nel suo blog.Gia' che c'ero ho approfondito meglio l'analisi dei nullable types cercando di trovare un alternativa in VB 2005 alla mancanza dei lifted operators presenti in C# 2.0 e gia' che c'ero ho buttato giu' un tentativo di coalescing operator generando questo “mostro”.    Public Function NullIIf(Of K As Structure)(ByVal value As Nullable(Of K)) As Nullable(Of K)        If (value.HasValue) Then            Return value        Else            Return Nothing        End If    End Function Che ha il difetto di operare solo sui nullable a differenza...

posted @ domenica 21 agosto 2005 17:41 | Feedback (7)

SyncToy for Windows XP

Se avete necessita' di mantenere sincronizzati tra loro due o piu' directories del vostro hard disk, allora e' il caso che valutiate l'utility gratuita SyncToy realizzata da Microsoft.Le azioni che SyncToy permette sui folders accopiati sono: Synchronize: New and updated files are copied both ways. Renames and deletes on either side are repeated on the other. Echo: New and updated files are copied left to right. Renames and deletes on the left are repeated on the right. Subscribe: Updated files on the right are copied to the left if the file name already exists on the left. Contribute: New and updated...

posted @ giovedì 18 agosto 2005 19:37 | Feedback (2)

Refactor: New features demo

La nuova versione di Refactor (il tool di refactoring disponibile gratuitamente per Visual Basic 2005) include nuove interessanti features, se siete interessati ad una demo live direttamente da Mark Miller (Chief Architect of the IDE Tools Division at Developer Express ) potete cliccare qui: Parte 1 e Parte 2A dire il vero, sono contrario ad alcune opzioni (ad esempio quella che crea punti di uscita multipli da una funzione) pero' devo dire che le frecce disponibili con Extract Method sono molto scenografiche e, come lo stesso Miller dice, aiutano a capire quanto complesso sia il metodo e quindi passibile di revisione.

posted @ venerdì 5 agosto 2005 22:55 | Feedback (1)

Whidbey Watcher #46: Dynamic PInvoke

Oggi ho scoperto un interessante aggiunta alla classe Marshal di System.InteropServices nel Framework 2.0, ovvero il metodo GetDelegateForFunctionPointer.Questo metodo permette di castare un puntatore a funzione verso un delegate compatibile con la firma della funzione target, aprendo perciò la strada al dynamic P-Invoke. Questo esempio (fatto volutamente in VB... ) dimostra come sfruttare tale metodo... Imports System.Runtime.InteropServicesModule Demo  '//Win32 functions  < FONT>"kernel32")> Public Function LoadLibrary(ByVal dllName As String) As IntPtr  End Function  < FONT>"kernel32")> Public Function GetProcAddress(ByVal hModule As IntPtr, ByVal procName As String) As IntPtr  End Function  < FONT>"kernel32")> Public Function FreeLibrary(ByVal hModule As IntPtr) As Boolean  End Function   '//Delegate definition  Public Delegate Function sndPlaySound(<MarshalAs(UnmanagedType.LPWStr)> ByVal name...

posted @ venerdì 5 agosto 2005 21:36 | Feedback (4)