我的WCF REST服务发生了一个奇怪的问题。对于在那里接受数据的操作,比方说,它接受Foo类:WCF REST服务 - DataContract停止构造函数?
[WebInvoke(Method = "PUT", UriTemplate = "users/{username}")]
[OperationContract]
public void UpdateLoginUser(string username, LoginUser userUpdated) {
[...]
}
现在我LoginUser类从我NormalUser类继承:
<DataContract()> _
Public MustInherit Class NormalUser
[...]
End Class
Public Class LoginUser
Inherits NormalUser
[...]
End Class
当我把我的服务,引发UpdateLoginUser,一切正常。但是,如果我申请DataContract我NormalUser类:
<DataContract()> _
Public Class LoginUser
Inherits NormalUser
[...]
End Class
...突然,LoginUser类的构造函数不反序列化期间火!我有我需要运行的商业登录规则。那么,为什么当我将DataContract属性应用于我的继承类时,其构造函数会停止被解雇?我怎样才能解决这个问题?如果我想更改名称空间或名称,我确实需要应用DataContract属性。
这是一个主要的PITA,因为虽然我可以将OnDeserializing属性应用于我的构造函数方法,但我该如何处理默认值? (eh。Private xyz As String =“abc”) - 初始化计算为构造函数的一部分,对,并且它不会完成? – Jez 2009-09-29 14:14:41
或者在'[OnDeserialized]'属性中使用一个方法,这个方法在整个事情被反序列化后被调用 – 2009-09-29 14:15:09
@ jez9999:在方法中也执行成员初始化。 @marc_s:对 - 很好。 – 2009-09-29 14:20:54