我有一個類在其構造函數中初始化其屬性。如何確保爲通過webservice暴露的類的屬性設置初始值
public class Criteria
{
public bool Chapter1 { get; set; }
public bool Chapter2 { get; set; }
...
public uint MaxResults { get; set; }
public int Hits { get; set; }
public Criteria()
{
Chapter1 = false;
Chapter2 = false;
...
MaxResults = 100;
Hits = -1;
}
}
此類在Web服務內部用於配置對數據庫的搜索。當我在內部構造類時,執行正確的初始化並且操作如預期。
然而,類也暴露作爲參數的方法,這個Web服務:
[WebMethod]
public List<xxx> GetxxxCollection(string requestingUserName, Criteria sc)
{
...
}
此前的客戶端調用這個Web服務,Criteria對象的構造和配置。但是,因爲它通過Web服務公開,構造函數實際上並沒有被調用,並且客戶端並不總是正確設置所有必需的值。
鑑於我們對客戶端代碼的控制有限,確保設置適當的初始值的最佳策略是什麼?
它已經一段時間以來,我使用這些基本的Web服務,但IIRC,是不是在反序列化之前調用的無參數構造函數?無論如何,你的屬性不必在構造函數中設置它們,而是在字段聲明中設置它們的初始值。編輯:但如果這是真的,默認的構造函數_is_運行,那麼也許你需要仔細檢查正在發送的數據:也許你沒有發送正確的信息。 –
ASMX是一項傳統技術,不應用於新開發。 WCF或ASP.NET Web API應該用於Web服務客戶端和服務器的所有新開發。一個暗示:微軟已經在MSDN上退役了[ASMX Forum](http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads)。 –
客戶端將負責正確初始化對象。如果客戶沒有足夠的知識去做,那麼您將需要重新考慮您的方法/重新設計您的應用程序。 – Tim