我正在实现一个灵活的处理器,以通过模板方法动态创建一些数据。一切运作良好,直到...我需要添加元素到ObservableCollection<item>
,我将包含集合的对象作为动态引用。异常将元素添加到动态变量的observablecollection属性
所以我有这样的:
dynamic componentItem = Activator.CreateInstance(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));
}
,但仍需要一个类型在编译时,而不是一个变量。
你怎么可以肯定的是'targetType'是在两种情况下一样的吗? – Gabe 2012-02-21 18:20:26
targetType是例程的参数。在此之前的过程中,我完成了ProcessMap.TargetType = typeof(UxBillingLineItem);并将该类型传入例程。 – tobewan 2012-02-21 19:33:53