2011-01-11 3 views
3

클라이언트의 XSD에서 작성한 WCF 서비스가 있습니다. 클라이언트 XSD는 3rdPartyTrackingNumber라는 필드를 호출합니다. 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

사용하는 serializer에 따라 다릅니다.

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

감사합니다,이 일했다. –

1

: 당신이 XmlSerializer를 사용하는 경우가 [DataMember] 속성

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

를 사용할 수는 wsHttpBinding WCF basicHttpBinding의 기본 인 DataContractSerializer를 사용하는 경우 예를 들어, 다음 [XmlElement] 속성은 일을해야합니다 WCF의 경우 정상적인 프로세스는 [DataContract] 클래스에 주석을 추가하는 것입니다. 각 속성은 [DataMember]이며 선택적인 Name="foo" 속성이 있습니다. 클래스 레벨을 추가하여 속성 당신이 말하는 것을

참고 "나는 명시 적으로 직렬화 할 구성원을 말할 것이다. 당신은 그럼 그냥 이름을 변경하고 싶은 주석을 할 수

관련 문제