CollectionBase e OnValidate

Quando codifico mi piace usare le collezioni tipizzate, il metodo più veloce è usare "STC Generator" di Pierre oppure andare su MSDN alla voce "CollectionBase class",  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemcollectionscollectionbaseclasstopic.asp, copiare e incollare la classe di esempio (una collectionBase di Int16) e fare replace di Int16 con il tipo di cui voglio creare la collezione. Ma è sufficiente? No, a mio parere occorre sistemare anche il metodo OnValidate.

L'esempio MSDN inviterebbe a scrive:

  protected override void OnValidate( Object value )  {
      if ( value.GetType() != Type.GetType("MyNamspace.MyType") )
         throw new ArgumentException( "value must be of type MyType.", "value" );
   }

Che bruttura dico io! :( Io prefesisco scrivere:

  protected override void OnValidate( Object value )  {
      if ( !(value is MyType )) //Errata korrige: nella prima versione di qsto post mankava il "!" :-p
         throw new ArgumentException( "value must be of type MyType.", "value" );
  }

L'operatore Is, http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/csref/html/vclrfispg.asp, oltre che essere più elegante funziona meglio nel caso voglio aggregare nella collezione oggetti non solo che sono del mio tipo ma anche che lo estendono. L'esempio dell'MSDN limita la collezione al solo tipo _preciso_ ma per chi fa uso del polimorfismo, qui una definizione semplice e veloce di qllo ke intendo, questo è un limite fastidioso.

So bene che questo è una considerazione che con la versione 2.0 sarà obsoleta perchè grazie ai generics con una riga di codice avremo già la ns bella collezione tipizzata :-D

posted @ lunedì 4 luglio 2005 13:45

Print

Comments on this entry:

# re: CollectionBase e OnValidate

Left by M.rkino at 04/07/2005 13:51
Gravatar
korretto, grazie lorenzo :-D

# re: CollectionBase e OnValidate

Left by Massimo Prota at 04/07/2005 22:25
Gravatar
Anche a me piace lavorare tipizzato e uso spesso l'add-in di Pierre o, per cose un po' più complesse, CodeSmith.
La tecnica del copia e incolla da MSDN non l'avevo mai considerata; comunque ottima osservazione ;)
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011