Olay listelerini bir List'e ve bir T newitem'e işaret eden bir olayı ele alıyorum ve işim yeni listeyi Listeye eklemek.T'nin ne olduğunu bilmeden <T> listesine T türü bir öğe nasıl eklenir?
Bunu, T olabileceğimi bildiğim tüm türleri denetlemeden nasıl yapabilirim?
geçerli kod bu birkaç düzine hatları:
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);
}
...
böyle bir şey yapmak mümkün olsaydı ben tercih ediyorum:
((List<T>) e.CollectionView.SourceCollection).Add((T)e.Item);
Herhangi bir fikir?
'System.Collections.ICollection' için bir tanım içermiyor 'Ekle' - bu yüzden başlangıçta bunu yayınladım, fakat IList'i denemedim, bu işe yaradı. Teşekkürler. – Alain
@Alain ah, yeterince adil - Hangi yöntemlerin hangi arabirimde olduğunu (örneğin, genel olmayan ve genel olmayan sürümler arasında biraz farklı) izledim. –
Bir akıl sağlığı denetimi olarak, Kaynak Kodunun doğrulanabildiğini doğrulamak için bir yol var mı e.Item ile aynı tipte mi? – Alain