WCF,如何实例化DataContract中的所有对象? [OnDeserializing]不起作用

时间:2011-02-15 10:04:31

标签: c# wcf deserialization

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

[DataContract]
public class Example
{
    SomeClass _someVar;

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

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

哎呀!

我还需要做什么?

亲切的问候, 河豚

2 个答案:

答案 0 :(得分:1)

WCF不使用标准的.net序列化,所以我不确定它会调用你的OnDeserializing方法。但是,您可以要求WCF使用XmlSerializer,它应该为您提供所需的行为。看看“控制序列化过程”here

答案 1 :(得分:0)

继PaulF的答案之后,你的班级不是单身人士 - 默认情况下,对该服务的2次调用将实例化Example并调用该方法一次。

因此,在类级别声明任何变量的确非常重要。

如果您想更改此行为,请查看here以获取更多信息