Я реализую гибкий процессор для динамического создания некоторых данных с помощью шаблонного подхода. Все работает хорошо, пока ... Мне нужно добавить элементы в ObservableCollection<item>
, и я ссылаюсь на объект, содержащий коллекцию, как на динамический.
Итак, у меня есть это:
dynamic componentItem = Activator.CreateInstance(targetType);
targetType (UxBillingLineItem
) содержит это свойство, которое инициализируется в конструкторе по умолчанию:
public ObservableCollection<UxBillingLineItem> ComponentServices { get; set; }
(Вложение преднамеренное)
Я создаю элемент для добавления в эту коллекцию:
object comp = Activator.CreateInstance(targetType);
Затем я делаю это, чтобы добавить это:
componentItem.ComponentServices.Add(comp);
Но я получаю это исключение:
The best overloaded method match for 'System.Collections.ObjectModel.Collection<UxBillingLineItem>.Add(UxBillingLineItem)
имеет недопустимые аргументы "
Редактировать ...
Я смотрел на Convert.ChangeType(comp, targetType)
, но он по-прежнему возвращает объект, а не targetType и возвращает ту же ошибку.
Также посмотрел:
public T ConvertType<T>(object input)
{
return (T)Convert.ChangeType(input, typeof(T));
}
но для этого все еще нужен тип во время компиляции, а не переменная.