我正在實現一個靈活的處理器,以通過模板方法動態創建一些數據。一切運作良好,直到...我需要添加元素到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