0

我有一个自定义控件,它“可以”将 ListCollectionView 作为 ItemsSource 传递,我需要 Child-Type 的反射使用。

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

Type t = lcv.GetItemAt(0).GetType();

但是,当 Collection 为空时,这将不起作用。

它也可以通过调用AddNew()

Object o = lcv.AddNew()
Type t = o.GetType();

但我不想调用 AddNew 只是为了创建一个虚拟对象,因为这会导致错误作为站点效应。

但是,如果方法“AddNew()”知道要创建哪种类型的对象,则必须有一种方法可以找出实际的 Child-Type 而无需创建一个。

我用过 google、msdn 以及 Try & Error 却找不到方法。

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

4

1 回答 1

1

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

var type = lcv.SourceCollection.GetType().GetGenericArguments()[0]
于 2012-11-08T15:49:31.113 回答