Questo weekend ho scritto il codice per il primo articolo della serie "Design Patterns all'interno del Framework .NET", che vorrei finire entro questa settimana. Ho cambiato un po' idea su come strutturarlo: visto che tratterà il più semplice dei pattern (il Singleton), ho giocato con la reflection per tirare fuori tutte le classi singleton del framework.
Piccola sorpresa: non solo la System.DBNull è una classe singleton (esempio dato in un post anteriore), ma lo sono anche System.Reflection.Missing, la classe interna System.Empty (sempre del mscorlib.dll) e Microsoft.JScript.Empty insieme a Microsoft.JScript.Missing del Microsoft.JScript.dll. Potete guardare il loro codice nei sorgenti del Rotor per esempio.
Quindi ho scoperto via reflection le classi che implementano un pattern, per fortuna semplice. Non so se riuscirò sempre via reflection a scoprire le classi di altri pattern, dato che entrano in gioco lì strutture di pattern di gran lunga più complesse - perlomeno ci provo. Se no, voglio scrivere lo stesso questa serie scegliendo "a occhio" le classi perché l'idea è di entrare un po' nell'intimità della progettazione del framework .NET tramite i design pattern e non necessariamente quella di fare un giro di forza dell'API della reflection