代码之家  ›  专栏  ›  技术社区  ›  Vaccano

用内部构造函数反序列化类

  •  2
  • Vaccano  · 技术社区  · 15 年前

    我正在为我的wpf应用程序开发一个拖放系统。

    它的工作方式是:

    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拖放顾问。)

    1 回复  |  直到 15 年前
        1
  •  3
  •   JaredPar    15 年前

    我和 FieldDefinition 类,XML序列化的最小问题是内部构造函数。这是一个非常复杂的类型,通常(间接)引用COM值和几个GC句柄。序列化该类型的实例并不容易。

    但您可以做的是序列化 字段定义 . 你可以用它来重建 字段定义 在以后的某个时间点。