ottobre 2008 Blog Posts
Se vado avanti così potrei diventare PostSharp addicted… già sono compiler addicted conclamato, sono sulla buona strada per diventare Unit Testing addicted e dopo aver provato la compile time validation di PostSharp posso asserire che si sta chiudendo il cerchio. Un paio di giorni fa abbiamo visto come usare PostSharp per validare a runtime i parametri di un metodo (per inciso funziona anche con i costruttori) facendo semplicemente una cosa del genere: class MyTestClass
{
public void Foo( [NotNull]String arg )
{
Console.WriteLine( "Foo( String ):...
Mi riallaccio al post di ieri per fare una precisazione, faccio un nuovo post perchè fare un update dell’altro è pressochè impossibile… sopportatemi ;-) Ieri ho detto che: “…quello che però non ha fatto è stato rimettere sul parametro del metodo privato l’attributo, e questo credo sia un bug, vedremo…;” Riferendomi a questa situazione: [ArgumentValidatorAspect()]
class MyTestClass
{
public void Foo( [NotNull]String arg )
{
Console.WriteLine( "Foo:" + arg );
}
}
e compilando il risultato che otteniamo, visto con il fido Reflector, è questo:
...
è da un po’ di tempo che mi riprometto di fare delle prove e capire come funziona il gioiellino. Diciamo che sono partito con una necessità decisamente triviale ma che illustra bene le potenzialità della cosa. Lo scopo è far funzionare questo codice: class MyTestClass
{
public void Foo( [NotNull]String arg )
{
Console.WriteLine( "Foo:" + arg );
}
}
e fare in modo di ottenere una ArgumentNullException( ‘arg’ ) se il metodo Foo() viene invocato così:
MyTestClass obj = new MyTestClass();
obj.Foo( null );
Nello specifico NotNullAttribute...
Forse non tutti sanno che… :-D, bello iniziare così. Sappiamo tutti cosa sono gli eventi e come utilizzarli/gestirli, abbiamo il sistema tradizionale (quasi legacy oserei dire ;-)): WithEvent we = new WithEvent();
we.SomethingOccurred += new EventHandler( OnSomethingOccurred );
In cui agganciamo esplicitamente un delegate, che punta ad un nostro metodo, all’evento esposto da una classe.
Abbiamo poi altri due sistemi, il secondo evoluzione del primo, che sono decisamente più smart:
WithEvent we = new WithEvent();
we.SomethingOccurred += delegate( object sender, EventArgs e )
{
//Do something...
};
possiamo infatti utilizzare gli anonymous methods per agganciare direttamente un...
Credo che il più famoso sia da sempre l’ormai defunto, almeno per me, Daemon Tools.. defunto perchè è più la spazzatura che si porta dietro che le feature… Qualche mese fa sono approdato a MagicISO, comodo, leggero e fa il suo sporco lavoro senza fronzoli e senza “rompere”… ma c’è di meglio! o meglio… a MagicISO manca qualcosa: per montare una ISO è necessario fare uno scomodo giro nel menù contestuale dell’icona che trovate nella notification area. Da qualche giorno sono però approdato a Virtual CloneDrive: como leggero fa il suo sporco lavoro ed è addirittura meno invasivo...
ebbene si anche io sono stato colto da acquisto compulsivo e ci sono cascato… il tutto un po’ sospinto dalla “stufita” (termine ereditato dal bergamasco) di portarsi dietro i soliti 10Kg di roba… e stimolato dall’andata al TechEd ho ceduto all’acquisto. E’ arrivato qualche giorno fa, c’era una bella installazione di Linux che non ha mai visto la luce :-D, adesso c’è una Windows Vista Ultimate con tanto di Visual Studio 2008 Team Suite, Office 2007, Sql Server 2005 Express e IIS 7… sto finendo di installare un po’ di fronzoli e devo dire che sono piacevolmente meravigliato dalle...
… e fa veramente pena… Da circa 10 anni CartaSi offre il servizio di gestione online della carta di credito, e naturalmente l’attivazione si fa tutta online, e il servizio di notifica (free) via SMS delle spese fatte… funziona, fa quello che deve fare e lo fa bene. Da circa un paio di mesi (…) la mia banca offre lo stesso servizio per le “sue” carte di credito: Non si può attivare online, ma bisogna recarsi presso la banca… spacciando il tutto con una non ben specificata maggior sicurezza del...