​​Как добавить элемент типа T в List , не зная, что такое T?

Я обрабатываю событие, которое передает аргументы события, указывающие на список и T newitem, и моя задача - добавить новый элемент в список.

Как я могу сделать это, не проверяя все типы, которые, как я знаю, может быть T?

Текущий код представляет собой пару десятков строк этого:

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);
  }
  ...

Я бы предпочел, чтобы можно было сделать что-то вроде этого :

((List<T>) e.CollectionView.SourceCollection).Add((T)e.Item);

Есть идеи?

10
задан Alain 27 February 2012 в 16:02
поделиться