ListCollectionView, найти тип, который AddNew() будет создавать?
У меня есть пользовательский элемент управления, который "может" иметь ListCollectionView, передаваемый как ItemsSource, который мне нужен дочерний тип для использования отражения.
Теперь я мог найти Type из первого элемента:
Type t = lcv.GetItemAt(0).GetType();
Однако это не сработало бы, когда Коллекция была пуста.
Это также работает по телефону AddNew()
Object o = lcv.AddNew()
Type t = o.GetType();
Но я не хочу вызывать AddNew только для того, чтобы создать фиктивный объект, так как это вызывает ошибки как эффект сайта.
Однако, если метод "AddNew()" знает, какой тип объекта создать, должен быть способ узнать фактический дочерний тип без необходимости его создания.
Я использовал Google, MSDN, а также Try & Error и не мог найти как.
Некоторые идеи? Заранее спасибо:-)
1 ответ
Вы можете использовать GetGenericArguments, чтобы найти тип, содержащийся в коллекции
var type = lcv.SourceCollection.GetType().GetGenericArguments()[0]