2012-01-04 23 views
0

私のプロジェクトでは、wcfによって公開されているビューモデルCityがあります。
プロパティの1つに違った名前が付けられている場合は、既に公開されている契約によって決まります。
そこで私はデータメンバー属性を追加し、そのような名前の値を設定:サービス参照は、しかし、データメンバー属性に拾うように見えるし、代わりのSelectedTranslationプロパティを受けていない私の消費テストプロジェクトでWebServiceでDataMember nameプロパティが無視されます

<DataContract(Namespace:=ServiceNamespace)> _ 
Public Class City 
    private mySelectedTranslation as String 
    <DataMember(Name:="CityName")> _ 
    Public Property SelectedTranslation() As String 
      Get 
       Return mySelectedTranslation 
      End Get 
      Set (ByVal value As String) 
       mySelectedTranslation = value 
      End Set 
     End Property 
End Class 

CityNameプロパティ

私には何が欠けていますか?

UPDATE
私はのServiceContractのXmlSerializerFormat(Style:=OperationFormatStyle.Rpc)設定を削除すると、データメンバー属性が正しく使用されていることが分かりました。 RPC XmlSerializerが盗聴されている可能性がありますか?

答えて

1

WCFのXMLには、DataContractSerializer(DCS)とXmlSerializerの2つのデフォルトシリアライザがあります。前者は、<DataContract><DataMember>(System.Runtime.Serialization名前空間から)などの属性を理解しています。後者は、<XmlElement>,<XmlAttribute>などのSystem.Xml.Serialization名前空間の属性を認識します。<XmlSerializerFormat>で契約を飾るときは、WCFにXmlSerializerを使用するように指示しているため、DCS固有の属性(DCSがデフォルトです)。

<XmlType(Namespace:=ServiceNamespace)> _ 
Public Class City 
    private mySelectedTranslation as String 
    <XmlElement(ElementName:="CityName")> _ 
    Public Property SelectedTranslation() As String 
      Get 
       Return mySelectedTranslation 
      End Get 
      Set (ByVal value As String) 
       mySelectedTranslation = value 
      End Set 
     End Property 
End Class 
:あなたは XmlSerializerを使用しながら、要素名を変更したい場合は

は、あなたが<XmlElement>属性を使用することができます

関連する問題