Wpf ListCollectionView,是否查找AddNew()将创建的类型?

Wpf ListCollectionView,是否查找AddNew()将创建的类型?,wpf,generics,reflection,listcollectionview,typeinfo,Wpf,Generics,Reflection,Listcollectionview,Typeinfo,我有一个自定义控件,“可以”将ListCollectionView作为ItemsSource传递,我需要的子类型用于反射 现在我可以从第一个元素中找到类型: Type t = lcv.GetItemAt(0).GetType(); 然而,当集合为空时,这将不起作用 它还可以通过调用AddNew() 但我不想调用AddNew只是为了创建一个虚拟对象,因为这会导致站点效果出现bug 但是,如果方法“AddNew()”知道要创建哪种类型的对象,那么必须有一种方法来找出实际的子类型,而不必创建一个 我

我有一个自定义控件,“可以”将ListCollectionView作为ItemsSource传递,我需要的子类型用于反射

现在我可以从第一个元素中找到类型:

Type t = lcv.GetItemAt(0).GetType();
然而,当集合为空时,这将不起作用

它还可以通过调用
AddNew()

但我不想调用AddNew只是为了创建一个虚拟对象,因为这会导致站点效果出现bug

但是,如果方法“AddNew()”知道要创建哪种类型的对象,那么必须有一种方法来找出实际的子类型,而不必创建一个

我使用过谷歌、msdn以及Try&Error,但找不到如何使用

一些想法? 提前感谢:-)

您可以使用查找集合中包含的类型

var type = lcv.SourceCollection.GetType().GetGenericArguments()[0]

真丢脸,我对一般的争论很熟悉,只是没找到。非常感谢@Steav您应该注意,只有当
SourceCollection
是泛型类型时,它才会起作用,否则,如果源集合不是空的,您需要检查集合中第一个元素的类型。
var type = lcv.SourceCollection.GetType().GetGenericArguments()[0]