我有一個使用basicHttpBinding的WCF服務。在服務方法上,我有一個返回的類,對於這個類我需要動態/編程排除屬性並更改XML的屬性名稱。這需要在WSDL和服務方法被調用時完成。如何使用XmlAttributeOverrides與WCF
我已經尋找最好的解決方案,看起來我需要(1)使用XmlAttributeOverrides與XmlSerializer或(2)在需要自定義的類上實現IXmlSerializable。或者可能有更好的解決方案。我知道可以將屬性名稱+「指定」添加到課程中,然後可以排除這些屬性。但是,這並不排除在WSDL中,這不能解決屬性重命名問題。
爲什麼我要這個?由於我們的應用程序的全球化和定製化。我們的應用程序中內置了很多屬性,可能會被應用程序的用戶完全重命名或隱藏。
經過很多研究,我最好的選擇是用我自己的自定義序列化程序換出WCF序列化程序。但是,我從來沒有找到如何爲使用XmlSerializer的自定義類執行此操作的好例子。此外,我不知道我將如何傳遞給特定類的XmlAttributeOverrides。
另外,對於其他想要相同功能的人來說,情況可能並非如此,但在我的應用程序中,我只需要在應用程序的生命週期中初始化一次值。太糟糕了C#不允許靜態只讀變量與屬性一起使用。
這裏是一個類的一個簡單的例子:
public Customer
{
public string Address1
{
get;
set;
}
public string Address2
{
get;
set;
}
public string Zipcode
{
get;
set;
}
}
在這個例子中,我想在應用程序中使用POSTALCODE而不是郵政編碼的某些裝置和隱藏地址2財產。
非常感謝您的幫助。
感謝, 泰勒
該OP提到了WSDL等 - 另外,一個屬性包在序列化佈局上提供了幾乎* no *的選擇。 –
屬性包會將我的屬性名稱更改爲索引字符串,這使我可以實時靈活地選擇名稱。但是,我不認爲wsdl和客戶端消費對象會真正爲屬性索引器或數據類型獲得很好的定義。我真的需要更好的結構化XML和模式。我會爲我的OP添加一個示例。 – tbcarver