相关疑难解决方法(0)

如何在不知道T是什么的情况下将类型T的项添加到List <T>?

我正在处理一个事件,它传递指向List和T newitem的事件args,我的工作是将newitem添加到List中.

如果不检查我所知道的所有类型,我怎么能这样做呢?

目前的代码是几十行:

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);
  }
  ...
Run Code Online (Sandbox Code Playgroud)

我更喜欢是否有可能做这样的事情:

((List<T>) e.CollectionView.SourceCollection).Add((T)e.Item);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# generics wpf .net-4.0

10
推荐指数
1
解决办法
4131
查看次数

在.net4中使用动态泛型集合时无法理解异常

请检查以下代码:

static void Main(string[] args) {
    IList<dynamic> items = new List<dynamic>();
    items.Add(3);
    items.Add("solid");
    dynamic i = new ExpandoObject();
    items.Add(i); //System.Collections.Generic.IList<object>' does not contain a definition for 'Add'
    Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)

这是"动态"机制中的错误吗?

dynamic .net-4.0 generic-collections

5
推荐指数
1
解决办法
1303
查看次数

标签 统计

.net-4.0 ×2

c# ×1

dynamic ×1

generic-collections ×1

generics ×1

wpf ×1