1

DataContract をシリアライズしようとしています..... DataMember の名前を変更したいと思います。

これは私の DataContract です

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

        public string CompanyName;


        public string AddressLine;

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

        public string City; 

}

次のようにシリアル化されます。

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

私が必要なのは:

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

「AddressLine2」を「AddressLineRename」にシリアライズしたい。

Thanks.
4

3 に答える 3

1

これは、DataMember の名前を変更するために解決されました。

  [DataMember(Order = 2, Name = "AddressLineRename", IsRequired = true)]
  [XmlElement("AddressLineRename")]
  public string AddressLine2; 
于 2012-08-30T05:44:14.413 に答える
0

私の場合、注文パラメーターを DataMember に追加するだけで解決しました

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

なぜかわからない..

于 2015-08-21T09:45:39.173 に答える
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);
    // ...
}

ISerializable については MSDN を参照してください。

于 2012-08-30T01:59:45.527 に答える