2010-02-02 60 views
2

我正在爲我的WPF應用程序拖放系統。C# - 使用內部構造函數反序列化一個類

它的工作方式是:

  1. 我採取拖項目
  2. 其序列爲xml
  3. 當被丟棄我再次反序列化。

這在我的測試應用程序中正常工作。但是,現在我正在嘗試在我的真實應用程序中執行此操作,所以我遇到了麻煩。我試圖反序列化的類(Microsoft.TeamFoundation.WorkItemTracking.Client.FieldDefinition)沒有公共構造函數。

當我嘗試反序列化使用此代碼是:

XmlReader reader = XmlReader.Create(new StringReader(xamlString)); 
object elt = XamlReader.Load(reader); 

我得到這個錯誤:

 
Cannot create object of type 
'Microsoft.TeamFoundation.WorkItemTracking.Client.FieldDefinition'. 
CreateInstance failed, which can be caused by not having a public default 
constructor for 'Microsoft.TeamFoundation.WorkItemTracking.Client.FieldDefinition 

難道我敬酒?有什麼方法可以反序列化這個類嗎?有關如何通過拖放來傳輸此類的其他想法? (我正在使用FluidKit拖放顧問)。

回答

3

我已經使用FieldDefinition類很多了,而使用XML序列化的最少問題是內部構造函數。這是一個非常複雜的類型,它通常具有對COM值和幾個GC句柄的引用(間接)。序列化類型的實例並不容易。

但是你可以做的是序列化FieldDefinition的ReferenceName。然後可以使用它在以後重建FieldDefinition對象。

+0

好主意!我會去那。謝謝你的提示。 – Vaccano 2010-02-02 17:43:03

相關問題