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'.
我应该如何序列化和反序列化对象?
你的类显然是不相等,因为它们是在不同的程序集中定义的。序列化器永远不会将这些独立的类识别为一个单元。
这就是创建可移植类库的目的。
将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