我在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没有这些属性。
有什么建议吗?
答案 0 :(得分:0)
我建议不要重载这些类的用法来执行逻辑。这是您的服务数据合同。您不应该触及生成的Silverlight代理类。我建议您将验证逻辑放入反序列化完成后调用的其他类中。否则,当您的错误实际存在于数据中时,您可能会在序列化代码中出现错误。