1
我試圖從一個對象複製一些屬性值到另一個(兩個對象實現IVenue,但對象B需要有一些值動態刪除)。想避免像很多代碼:爲什麼Reflection的SetValue會引發異常?
a.Property1 = b.Property1;
a.Property2 = b.Property2;
etc
我試圖使用反射來循環性能和整個複製:
public VenueContract(TVDData.Interfaces.IVenue v, List<TVDData.APIClientPermittedFields> permittedFields)
{
PropertyInfo[] Properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo p in Properties)
{
PropertyInfo source = v.GetType().GetProperty(p.Name, BindingFlags.Public | BindingFlags.Instance);
p.SetValue (p, source.GetValue(v,null),null);
}
}
但是我收到的錯誤:
"Object does not match target type"
這兩個屬性均爲int型,聲明爲:
public int ID { get; set; }
問題似乎在於p.SetValue as source.GetValue(v,null)返回期望值。
任何人都可以解釋我做錯了什麼?如果這將是一個更合適的解決方案,請隨意提出一個完全可選的方法。
飛碟雙向先生,我可以吻你(但我不會)。 – Simon