對於一個客戶,我們正在開發一些WCF Web服務。我們的消息協定是通過在我們的類及其屬性之上使用DataContract和DataMember屬性來定義的。 DataMember屬性具有一些額外的屬性,允許我們添加一些額外的規則。例如,如果某個屬性應該始終可用,那麼我們使用(IsRequired = true);以表明這一點。收到或發送消息時會檢查這些規則。WCF IsRequired屬性困境
[DataContract]
public class TestClass
{
[DataMember(IsRequired = true)]
public int RequiredValue { get; set; }
}
但是我們的測試過程中,我們注意到,這是行不通的,因爲在客戶端的RequiredValueField由空初始化,因此有一定的閱讀,我發現這個屬性,EmitDefaultValue = false,所以同時使用,我得到期望的結果
[DataContract]
public class TestClass
{
[DataMember(IsRequired = true, EmitDefaultValue=false)]
public int RequiredValue { get; set; }
}
但假設,如果某些客戶端初始化RequiredValue = 0
,然後調用服務的方法,它再次給了錯誤。 那麼如何使用一個選項來釋放我的API用戶,使他們可以傳遞此成員中的任何東西,包括零,但是當它們忽略時,只有它應該給出錯誤?