2012-08-30 2 views
1

DataContract serialize하는 중 ..... DataMember의 이름을 바꾸고 싶습니다. " 직렬화 중에 DataMember 이름 바꾸기

<Sample> 
    <CompanyName>aaa</CompanyName> 
    <AddressLine>16 aaaa</AddressLine> 
    <AddressLineRename>Unit 66</AddressLineRename> 
    <City>Houston</City> 
</Sample> 

내가"AddressLine2가 "에 연재되고 싶지 :

<Sample> 
    <CompanyName>aaa</CompanyName> 
    <AddressLine>16 aaaa</AddressLine> 
    <AddressLine2>Unit 66</AddressLine2> 
    <City>Houston</City> 
</Sample> 

내가해야 할 것은 :

는 직렬화 내 DataContract

[DataContract(Name = "Sample")] 
[Serializable] 
public struct Sample 
{ 

     public string CompanyName; 


     public string AddressLine; 

     [DataMember(Name="AddressLineRename")] 
     public string AddressLine2; 

     public string City; 

} 

입니다 AddressLineRename ".

Thanks. 

답변

1

DataMember의 이름을 바꿔서 해결했습니다. 내 경우

[DataMember(Order = 2, Name = "AddressLineRename", IsRequired = true)] 
    [XmlElement("AddressLineRename")] 
    public string AddressLine2; 
0

직접 직렬화 프로세스를 사용자 지정하려면 ISerializable을 구현해야 할 수도 있습니다.

public Sample(SerializationInfo info, StreamingContext context) 
{ 
    CompanyName = info.GetString("CompanyName"); 
    // ... 
    AddressLine2 = info.GetString("AddressLineRename"); 
    // ... 
} 

public void GetObjectData(SerializationInfo info, StreamingContext context) 
{ 
    info.AddValue("CompanyName", CompanyName); 
    // ... 
    info.AddValue("AddressLineRename", AddressLine2); 
    // ... 
} 

the MSDN for ISerializable를 참조하십시오

나는 당신이 추가해야 코드가 같을 거라고 생각해.

+0

..

[DataMember(Order = 2, Name = "AddressLineRename")] public string AddressLine2; 

왜 몰라 DataMember를

에 주문 매개 변수를 추가 해결했다 - (SerializationInfo에이 샘플을 .. ...) 및 GetObjectData() ....... – user1282609

0

난 그냥 내가 전화해야하는 곳에서