serialization - 如果数据表包含拒绝序列化的对象,如何保存数据表?

标签 serialization datatable google-api google-calendar-api ixmlserializable

我将 Google API 中的 GData“Event”对象存储在数据表中(好吧,我必须将它们转换为对象,否则它们不会进入),并且我可以完美访问事件的所有属性,并使用它们来更新 Google,但我无法将数据表(或父数据集)序列化为文件,因为:

类型“Google.GData.Calendar.EventEntry、Google.GData.Calendar、Version=1.4.0.2、Culture=neutral、PublicKeyToken=aa6748391206b888”未实现 IXmlSerialized 接口(interface),因此无法继续进行序列化。

无论我尝试简单地序列化为 XML 还是二进制,都会发生这种情况,而且我找不到解决该问题的方法;任何数据结构都不能以某种方式保存到文件中吗?

为了设置上下文,我最初将 GData EventFeed 保存为 XML,这花了大约 30 秒才使用 Google API 的 myEventFeed.saveToXML 弄清楚,我想稍后重新加载它......我花了两天时间尝试将 xml 返回到 EventFeed 对象中,现在已切换到将 EventEntry 从 EventFeed 保存到数据表中。

所以我设法轻松地将 Feed 保存到 XML 1.0,但是将其读回到 GData EventFeed 中则是另一回事 - Google 为您提供了 myFeed.saveToXML 但没有 loadfromXML 方法:-/所以我最终尝试添加 System. Runtime.Serialization 使用类似的东西:

暗淡阅读器 As XmlReader = XmlReader.Create(fileName) 昏暗的 rssFeed As SyndicateFeed = SyndicateFeed.Load(reader)

一开始这看起来很有希望,但数据并不全部在 rssFeed 中,而且在调用我需要的方法之前,我仍然必须将数据放回到 Google.GData.Calendar.EventFeed 中,并且我也不知道该怎么做。我想可以将最重要的数据从 rssFeed 复制到新的 EventEntry 中,或者通过提取重要数据对数据表执行相同的操作...但这将非常不雅观,并且有风险。

有什么想法我现在应该转向哪个方向吗?我是不是找错了树?

谢谢, 尼尔

VB.NET 3.5 VS 2008

最佳答案

如果您有一个不想序列化的对象,则无法使其序列化。

这意味着您需要创建一个想要序列化的对象。创建一个 XML-Serialized 类,它将充当实际类的代理。您的代理将有一个可序列化的属性,与您希望序列化的原始类的每个属性相对应:

public class Original
{
    private string _property1;
    private int _property2;

    public string Property1
    {
        get { return _property1; }
    }

    public int Property2
    {
        get { return _property2; }
    }
}

public class ProxyToOriginal
{
    private readonly Original _original;

    public ProxyToOriginal(Original original)
    {
        _original = original;
    }

    public string Property1
    {
        get { return _original.Property1; }
        set {  }
    }

    public int Property2
    {
        get { return _original.Property2; }
        set { }
    }
}

关于serialization - 如果数据表包含拒绝序列化的对象,如何保存数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352137/

相关文章:

C#: 找不到 SerializableAttribute

.net - 使用嵌入式字典反序​​列化 JSON<string, string>

java - Cassandra/Java 字符不匹配创建以 MD5 作为名称的表时出现异常

c# - 列出 Google Drive api 中的文件会导致系统格式异常

PHP- Google Api 获取目标完成量

c# - 带有继承的自定义 XML 序列化

Java序列化问题

.net - 在绑定(bind)到 DataGridView 的 DataTable 上触发更新

mysql - 我如何将 "select"用于具有 "not in (a subquery)"的数据表

google-api - GoogleCustom API 结果数