Obsługuję zdarzenie, które przekazuje argumenty zdarzeń wskazujące na listę i nowy wpis, a moje zadanie polega na dodaniu nowego elementu do listy.Jak dodać element typu T do listy <T>, nie wiedząc, co to jest T?
Jak mogę to zrobić bez sprawdzania wszystkich typów, jakie znam może być?
Obecny kod jest kilkadziesiąt wierszy to:
private void DataGridCollectionViewSource_CommittingNewItem(object sender, DataGridCommittingNewItemEventArgs e)
{
Type t = e.CollectionView.SourceCollection.GetType();
if (t == typeof(List<Person>))
{
List<Person> source = e.CollectionView.SourceCollection as List<Person>;
source.Add(e.Item as Person);
}
else if (t == typeof(List<Place>))
{
List<Place> source = e.CollectionView.SourceCollection as List<Place>;
source.Add(e.Item as Place);
}
...
wolałbym gdyby to było możliwe, aby zrobić coś takiego:
((List<T>) e.CollectionView.SourceCollection).Add((T)e.Item);
jakieś pomysły?
'System.Collections.ICollection' nie zawierają definicji "Dodaj" - dlatego to napisałem na początku, ale nie wypróbowałem ILista, ten działa. Dzięki. – Alain
@Alain ah, dostatecznie jasny - straciłem informacje o tym, które metody są w interfejsie (iirc jest nieco inny w wersjach nietypowych i generycznych). –
Jako sprawdzian poczytalności, czy istnieje sposób, w jaki mogę zweryfikować, że SourceCollection jest tego samego typu co e.Item? – Alain