posts - 315, comments - 268, trackbacks - 15

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

domenica 24 agosto 2008

[OT] Ferrari

E' tanto che non postavo a riguardo di un gran premio di Formula 1. Problemi di affidabilità per la Ferrari (rottura del motore per Raikkonen), e in questa fase del mondiale non è l'ideale.

Classifica finale del GP d'Europa:

1° Massa (Ferrari),  2° Hamilton (McLaren), 3° Kubica (Bmw Sauber)

Prossimo appuntamento: GP del Belgio, domenica 7 settembre

Technorati Tag:

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (7) | Filed Under [ OT ]

ConvertAll<>

Supponiamo di avere una situazione schematizzata dal seguente Class Diagram:

image

Supponiamo di avere un unico metodo Add che aggiunge oggetti di tipo Person ad una lista tipizzata denominata People, come nel caso seguente:

1 2 List<Person> _people = new List<Person>(); 3 4 private void Add(Person p) 5 { 6 _people.Add(p); 7 }

Utilizziamo il seguente codice per popolare la collezione People :

1 Employee e = null; 2 e = new Employee(); 3 e.Age = 21; 4 e.Name = "Peter"; 5 e.Surname = "Book"; 6 e.Office = "Piazzale Kennedy 21"; 7 8 Add(e); 9 10 e = new Employee(); 11 e.Age = 23; 12 e.Name = "Anna"; 13 e.Surname = "Rossi"; 14 e.Office = "Via Ammiraglio Cagni 36"; 15 16 Add(e); 17 18 e = new Employee(); 19 e.Age = 35; 20 e.Name = "Mario"; 21 e.Surname = "Rossi"; 22 e.Office = "Via Duca degli Abruzzi"; 23 24 Add(e);

Se volessimo convertire la nostra lista tipizzata di oggetti Person in una lista tipizzata di oggetti Employee:

1 List<Employee> employees = new List<Employee>();

possiamo seguire due strade, la prima è utilizzare un ciclo foreach:

1 foreach (Person p in _people) 2 employees.Add((Employee)p);

La seconda  è quella di utilizzare il metodo generico ConvertAll<> che esegue la conversione di un Array di un tipo, Person in questo caso, in un Array di un'altro tipo,Employee, utilizzando un Converter, ovvero un metodo che esegue la conversione di un tipo in un altro. In soldoni (righe di codice :-) ):

Il Converter

1 private Employee PersonEmployeeeConverter(Person p) 2 { 3 if (p.GetType() == typeof(Employee)) 4 return (Employee)p; 5 else 6 return null; 7 }

Il codice di conversione:

1 employees = _people.ConvertAll<Employee>(new Converter<Person, Employee>(PersonEmployeeeConverter));

Osservazioni: ConvertAll<> e il concetto di Converter sono stati introdotti con il .Net Framework 2.0

Technorati Tag:

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (2) | Filed Under [ C# ]

Powered by:
Powered By Subtext Powered By ASP.NET