2014-04-04 7 views
1

이 XML SOAP 형식을 가져 오기 위해 Message 계약을 어떻게 정의 할 수 있습니까?이 스키마를 가져 오기 위해 메시지 계약을 정의하는 방법은 무엇입니까?

스키마 : 나는 아래 언급으로 클래스 파일을 생성하지만 다른 응답을 제공

<List> 
     <Exclusions> 
     <ExclusionID>123</ExclusionID> 
     <ExclusionID>656</ExclusionID> 
     </Exclusions> 
     </List> 

<DataContract> _ 
Public Class List 


    ''' <remarks/> 
    Private _exclusions As Exclusions 

    <DataMember()> _ 
    Public Property Exclusions() As Exclusions 
     Get 
      Return _exclusions 
     End Get 
     Set(ByVal value As Exclusions) 
      _exclusions = value 
     End Set 
    End Property 

End Class 

<DataContract> 
Public Class Exclusions 

    <DataMember> 
    Public ExclusionID As ExclusionID() 

End Class 

<MessageContract> 
Public Class ExclusionID 

    <MessageBodyMember(Name:="")> 
    Public Value As String 

End Class 

내 반응은 다음과 같이이다 :

<List > 
     <Exclusions > 
     <ExclusionID> 
      <ExclusionID> 
      <Value>123</Value> 
      </ExclusionID> 
      <ExclusionID> 
      <Value>145</Value> 
      </ExclusionID> 
     </ExclusionID> 
     </Exclusions> 
    </List> 

어떻게 실현하려 메시지 계약을 사용하는 적절한 메시지?

답변

0

VB.net이 내 VS에 설치되어 있지 않습니다. C# 코드를 참조하십시오.

// 클래스 정의

public class List { 

    [MessageBodyMember] 
    public Exclusions Exclusions { get; set; } 
} 

[CollectionDataContract(Name="Exclusions", ItemName="Exclusion")] 
public class Exclusions : List<String> { 

} 

//help method 
static void WriteMessage(Message message, String filePath) { 
    using (var writer = new XmlTextWriter(filePath, Encoding.UTF8)) { 
     message.WriteMessage(writer); 
    } 
} 

//code 
var myList = new List(); 
myList.Exclusions = new Exclusions(); 
myList.Exclusions.Add("123"); 
myList.Exclusions.Add("656"); 

using (var message = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, 
    "http://127.0.0.1:3333/someaction", myList)) { 

    WriteMessage(message, "a.xml"); 
}