Quando si crea una collection tipizzata in .net 1.x (santi Generics ma quanto mi mancate in questi casi) gli elementi che possono essere inseriti, possono essere solo del tipo specificato. Questo non è del tutto vero, o meglio è del tutto vero solo nel caso si implementino alcuni metodi.
Prendiamo questo esempio:
public class Item{
public string sz1;
public string sz1;
}
public class ItemEx : Item{}
Se creiamo una collection tipizzata che accetta oggetti Item, potremo ugualmente inserire oggetti ItemEx, in quanto derivanti da Item.
Questo può essere un problema. La soluzione più "barbara" (la cito solo perchè l'ho vista nel codice di alcune persone) è quella di mettere un controllo ad ogni metodo della collection. Quella più veloce, elegante e potente, invece, è quella di eseguire l'override di un metodo protetto: OnValidate.
protected override void OnValidate( Object value){
if (value.GetType() != typeof(Item))
throw new ArgumentException ("Tipo di input errato");
}
Questo metodo viene chiamato ogni volta che viene modificata la collection e quindi basta inserire qui il codice di controllo ed il gioco è fatto. Carino no? :)
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Entity Framework è lento! mmmmh, probabilmente sei tu che lo stai usando male!, il 7 ottobre 2022 alle 10:55
- Cosa penso di ASP.NET vNext, il 3 settembre 2014 alle 09:00
- E così AngularJS e DurandalJS convergono..., il 7 maggio 2014 alle 11:51
- Usare fiddler per simulare le risposte da un servizio, il 28 ottobre 2013 alle 08:00
- Tip: cosa fare quando Entity Framework Code-First Migrations smette di funzionare, il 18 gennaio 2013 alle 11:04
- Visual Studio 11 beta: le novità di Entity Framework 5.0 e WCF 4.5, il 2 marzo 2012 alle 23:08