4

所以我有一些这样的代码。

[DataContract]
public class Example
{
    SomeClass _someVar;

    [OnDeserializing]
    public void OnDeserializing(StremingContext c)
    {
        _someVar = new SomeClass();
    }
}

有趣的是,如果我使用 Visual Studio 2010 中的测试调试客户端,则会调用 OnDeserializing()。但如果我尝试托管我的 WCF 服务,然后从我自己的客户端调用它,它不会被调用(或者可能不会't),因为 _someVar 始终为空。

啊!

我还需要做什么?

亲切的问候,河豚

4

2 回答 2

2

WCF 不使用标准的 .net 序列化,所以我不确定它会调用您的 OnDeserializing 方法。但是,您可以要求 WCF 使用 XmlSerializer,它应该会给您想要的行为。在此处查看“控制序列化过程” 。

于 2011-02-24T21:17:18.907 回答
0

除了 PaulF 的回答之外,您的类不是单例 - 默认情况下,对服务的 2 次调用将实例化Example两次并调用一次方法。

因此,在类级别声明任何变量真的没有什么意义。

如果您想更改此行为,请查看此处了解更多信息

于 2011-02-24T21:21:34.823 回答