从WCF服务获得的对象具有空私有字段,即使它们在类中初始化

时间:2015-04-30 17:28:03

标签: wcf null field private datacontract

我从WCF服务获取对象。对象中的一个字段是NodaTime.IClock类型的私有字段,称为timeProvider,该字段主要用于依赖注入(通过构造函数重载)以在测试期间提供假时钟。

但是,我从WCF服务获取的实例将此字段设置为null,即使该类在字段声明和默认构造函数(私有)中显式初始化字段。

我认为将该字段作为数据合同的一部分是有道理的,但我不希望永远为空。我无法弄清楚它是如何设置为null的,代码中没有允许它的路径。

如何确保从WCF获取此字段时具有值?

[更新]
我在WCF文档中找到了这个:

  

在反序列化期间,首先创建一个未初始化的对象,而不调用该类型上的任何构造函数。然后对所有数据成员进行反序列化

这确实解释了为什么我的构造函数没有效果,但我很惊讶它甚至击败了字段初始化器。毕竟,我可能需要将此字段作为数据协定的一部分,或者在反序列化后找到初始化它的方法。

[更新2]
我发现了这个非常相似的问题Initialize private readonly fields after Deserializing因此我将自己的问题标记为重复。

0 个答案:

没有答案