[英]XmlSerializer.Deserialize only specific classes
這是我的情況。 我需要創建一個基於現有對象類的新應用程序,由於其他項目正在使用該類,因此我不允許對其進行更改。 但是我需要在新應用程序中將這些對象與新對象結合使用。 在我的新應用程序中,每個動作都將具有一個請求和響應類,由於將通過套接字將其發送給另一家公司,因此將對其進行序列化/反序列化。 然后,我向公司提供XSD,他們將使用它們來形成響應並以XML的形式發送回去。 然后,我需要將XML反序列化到新創建的對象中,在這種情況下,該對象稱為GetAccountDetailsMessageResponse。
[System.Xml.Serialization.XmlRoot("GetAccountDetailsMessageResponse", Namespace = "http://test.com.au/")]
public class GetAccountDetailsMessageResponse
{
public MyNewHeader Header
{
get;
set;
}
public AccountsResponse Response
{
get;
set;
}
}
//Here is the existing class structure which I need to use, and cannot
// MAIN CLASS - Containing collection of Accounts
public class AccountsResponse : ResponseHeader
{
public AccountsResponse()
{
Accounts = new List<AccountResponse>();
}
public List<AccountResponse> Accounts { get; set; }
}
public class AccountResponse : ResponseHeader
{
public int AccountNumber { get; set; }
public string AccountType { get; set; }
}
public class ResponseHeader : MessageHeader
{
public string ReservedField1 { get; set; }
public string ReservedField2 { get; set; }
public string TextMessage { get; set; }
public string Status { get; set; }
public TransactStatus TransactStatus { get; set; }
}
public class MessageHeader
{
public string Function { get; set; }
public string MessageID { get; set; }
public int CustomerNumber { get; set; }
public string AccessCode { get; set; }
public string SessionID { get; set; }
public int Flag { get; set; }
}
正如您在此處看到的那樣,該類現有的類結構非常令人討厭,因為大多數類都是從Header派生的。 甚至代表單個帳戶的實際實體AccountResponse也從ResponseHeader派生。 大豆使您到處都有ResponseHeaders。
使用Microsoft的XSD.exe工具,創建了自動生成的XSD,需要將其提供給其他公司。
我的問題是,原始AccountsResponse類是從ResponseHeader派生的,我已經在GetAccountDetailsMessageResponse中定義了自己的標頭屬性作為屬性標頭。
**所以這是我的問題:如何獲得XSD工具,甚至編寫將對象序列化為XML的C#方法,但是在AccountsResponse類中忽略ResponseHeader。 因此,它只應序列化AccountsResponse中的所有內容,而忽略將從ResponseHeader派生的所有內容。
最后,我希望XSD.exe工具或自定義C#方法生成XSD,該XSD將提供如下所示的XML:
覆蓋AccountsResponse中的所有ResponseHeader / MessageHeader屬性,並將XMLIgnore屬性附加到它們,或者作為替代,將XmlSchemaProvider屬性(定義了傳遞模式的函數)附加到類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.