我的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