【问题标题】:DeSerialized attribute in SilverlightSilverlight 中的反序列化属性
【发布时间】:2009-04-30 06:33:30
【问题描述】:

我在 silverlight 和 WCF 服务之间移动的数据相当有限。所以我建立了一些数据合同。我希望能够使用相同的类在客户端进行一些有限的数据验证,而不需要 DTO 和其他东西的开销。

我有这样的合同:

[DataContract]
class MyObject
{
   private String _id;
   [DataMember]
   public String ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
                DoStuff();
            }
}

现在,当我反序列化对象时,setter 将运行。这将设置私有变量 _id,这很好。但我不希望 DoStuff() 在反序列化时运行。

我曾希望使用 [OnDeserializing] 和 [OnDeserialized] 属性。我可以定义一个 bool 标志,我可以用它来控制在 setter 中运行的内容。这实际上适用于服务器端,但 Silverlight 没有这些属性。

有什么建议吗?

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    我建议不要重载使用这些类来执行逻辑。这是您的服务数据合同。您不应该接触生成的 Silverlight 代理类。我建议您将验证逻辑放入您在反序列化完成后调用的其他类中。否则,当您的错误实际上在您的数据中时,您可能会开始在序列化代码中遇到错误。

    【讨论】:

    • 正如我所说,我没有太多数据可以移动。我试图避免为了通过图层传递数据而必须多次定义一个对象。我想念 ADO.NET 数据集...
    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多