WPF和XAML之间点结构的传输和反序列化

本文关键字:传输 反序列化 结构 XAML 之间 WPF | 更新日期: 2023-09-27 18:09:03

假设我有WPF应用程序和Windows 8 Store应用程序,我想在它们之间交换一些数据。所以我需要序列化和反序列化它们,但我目前在反序列化DTO对象中的点结构时遇到了问题:

(Windows 8商店应用程序定义)

using Windows.Foundation;
namespace DTO
{
    public class ImageMessageDTO : BaseDTO
    {
        public virtual Point ProblematicPoint { get; set; }
    }
}

(WPF定义)

using System.Windows;
namespace DTO
{
    public class ImageMessageDTO : BaseDTO
    {
        public virtual Point ProblematicPoint { get; set; }
    }
}

正如您所看到的,DTO对象是相同的,除了在不同平台上定义Point的名称空间。

当反序列化到WPF DTO时,我得到以下错误:

附加信息:错误在第一行位置256。"EndElement"命名空间中的'ProblematicPoint '"http://schemas.datacontract.org/2004/07/DTO"没有预料到。期待元素'_x'.

我应该如何序列化和反序列化对象?

WPF和XAML之间点结构的传输和反序列化

你的类显然是相等,因为它们是在不同的程序集中定义的。序列化器永远不会将这些独立的类识别为一个单元。

这就是创建可移植类库的目的。

将DTO放入PCL中,然后从WPF项目和WinRT项目中引用该库:

- Solution MyApplication
   |--> MyApplication.Model (Portable Class library)
   |      |--> - ImageMessageDTO
   |
   |--> MyApplication.WPF (WPF Application)
   |      |--> References
   |            |--> MyApplication.Model
   |
   |--> MyApplication.WinRT (WinRT Application)
          |--> References
                |--> MyApplication.Model