Silverlight中的DeSerialized属性

时间:2009-04-30 06:33:31

标签: silverlight

我在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没有这些属性。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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