2011-01-11 3 views
3

私はクライアントからXSDからビルドしたWCFサービスを持っています。クライアントXSDは、ThirdPartyTrackingNumberという名前のフィールドを呼び出します。 C#では、数字で始まるフィールドを持つことができないので、私はThirdPartyTrackingNumberという名前を付けました。シリアル化されたときに3rdartyTrackingNumberとしてレンダリングするメタタグなどを列に置くことはできますか?C#では、フィールド名をシリアル化するときとはどのように異なるのですか?

public class OSSShipmentGroup 
{ 
    public string status { get; set; } 
    public string shipmentNumber { get; set; } 
    public object shipFrom { get; set; } 
    public string carrierName { get; set; } 

    [Some meta tag here] 
    public string ThirdPartyTrackingNumber {get; set;} 
    public OSSOrderDates dates { get; set; } 
    public OSSOrderAddress[] address {get; set;} 
    public OSSOrderShipmentItem[] containedItems { get; set; } 
    public OSSShipmentInvoice[] invoice {get; set;} 
} 

私はISerializableを実装し、GetObjectDataで変更を行うことができます知っているが、それは唯一のフィールドである場合、私は、私はちょうどフィールドにメタタグを追加することができます期待していました。

答えて

6

使用しているシリアライザによって異なります。たとえば、あなたが、その後[XmlElement]属性は仕事をしなければならないXmlSerializerを使用している場合は、

[DataMember(Name = "ABC")] 
public string ThirdPartyTrackingNumber { get; set; } 

[DataMember]属性を使用することができwsHttpBinding WCF basicHttpBindingのデフォルトであるDataContractSerializerを使用している場合:

[XmlElement(ElementName = "ABC")] 
public string ThirdPartyTrackingNumber { get; set; } 
+0

ありがとう、これは働いていました。 –

1

WCFの場合、通常の処理では、クラスに[DataContract]というアノテーションを付けます。各プロパティは[DataMember]で、これにはオプションのName="foo"プロパティがあります。クラスレベルを追加することによって、属性、あなたが言っていることを

注「私は明示的にシリアル化するためにどのメンバーを教えてくれます;。あなたがちょうどあなたが名前を変更したいものに注釈を付けることはできません

関連する問題