【问题标题】:Is an objects constructor called upon rehydration是在补液时调用的对象构造函数
【发布时间】:2011-06-16 06:39:31
【问题描述】:

我有一个对象,它在实例化时通过构造函数为自己创建一个唯一的 id。我的问题可能很愚蠢,但我似乎找不到答案。

在从隔离存储中补液时会调用构造函数吗?还是仅在使用“new”关键字时才调用构造函数。我的意图不是调用它,因为我只想在第一次实例化时调用它。

【问题讨论】:

  • 二进制还是 Xml 序列化?不一定重要,但我很好奇......
  • Windows phone 7 上隔离存储的默认设置是什么,我将对象存储在 IsolatedStorageSettings.ApplicationSettings 中。

标签: c# windows-phone-7 constructor isolatedstorage


【解决方案1】:

在反序列化过程中会调用默认构造函数。它将创建对象,然后复制序列化的属性/字段。

【讨论】:

  • 它如何处理只读或私有集的属性?
  • 我的最后一条评论没有实际意义,因为我只能对属性进行逻辑检查,而不是在构造函数中,但很高兴知道这些信息,谢谢。
【解决方案2】:

虽然这是针对 .Net 4,而不是 Silverlight,但根据 MSDN: ISerializable Interface,具体来说:

ISerializable 接口意味着一个 带有签名的构造函数 构造函数(序列化信息 信息,StreamingContext 语境)。在反序列化时, 仅调用当前构造函数 在数据之后 序列化信息已 由格式化程序反序列化。在 一般来说,这个构造函数应该是 如果类未密封,则受保护。

...我不希望 Windows Phone 有什么不同。

【讨论】:

    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多