序列化/反序列化不同的属性名称?

Zho*_*len 1 c# xml serialization deserialization

我有一个旧系统,它在请求信息调用中返回xml,其名称如下所示:

postalCodeField,firstNameField ...

那个系统然后有一个修改调用,它接受xml,如下所示:

PostalCode,fistName,lastName ....

有没有办法构建一个反序列化请求的对象,但是用不同的名称序列化xml输出?

特别:

public class RequestInfo
{
    public string firstNameField{get;set;}
    public string lastNameField{get;set;}
}

public class ModifyInfo
{
    public string firstName{get;set;}
    public string lastName{get;set;}
    public ModifyInfo(){}
    public ModifyInfo(RequestInfo ri)
    {
        firstName = ri.firstNameField
        .....
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有通过说属性的方法使这些成为同一个对象?

编辑

有没有办法让一个对象在反序列化时接受一个标记名称,然后在序列化上输出一个不同的名称?

<myTagField />(反序列化)myObj.MyTag(序列化为)<MyTag />

Tre*_*ott 5

重要的是要注意您正在使用的实际序列化程序.每个不同的序列化程序的工作方

我假设你正在使用System.Xml.Serialization.XmlSerializer.如果是这种情况,那么您希望使用System.Xml.Serialization命名空间中的属性,例如XmlElementAttribute,如下所示:

public class Person
{
    [System.Xml.Serialization.XmlElement(ElementName = "firstNameField")]
    public string FirstName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这假定该字段是XML元素.如果是属性,请使用该XmlAttribute属性.