3

VS2010 で WCF クライアントを構築しています。私たちが使用する Web サービスは、xs:nonNegativeInteger として返すいくつかのデータを定義します。ただし、VS2010 は、WCF クライアント コードの生成時に、これらの xs:nonNegativeInteger 属性の文字列型のプロパティを持つクラスを生成します。

なぜそうなのか、VS2010にマッピングを xs:nonNegativeInteger から文字列ではなく整数に調整するように指示できるかどうか、またその方法を知りたいです。

(使用するWebサービスのwsdlを変更することはできません...また、サービス参照を更新する必要がある場合に備えて、生成されたコードを単に変更することにも躊躇しているため、構成を介したある種のデータ型マッピングは理想。)

皆さんありがとう!

使用する WSDL のスニペットの例:

<xs:element minOccurs="0" name="blub" type="xs:nonNegativeInteger" />

生成された WCF クライアント コードのスニペットの例:

<System.Xml.Serialization.XmlElementAttribute(DataType:="nonNegativeInteger", Order:=0)>  _

Property blub() As String
4

1 に答える 1

1

XmlSerializerの代わりにを使用するように SvcUtil を構成したようですDataContractSerializer。MSDN はXmlSerializerxs:nonNegativeInteger を文字列シリアル化し、Int64DataContractSerializerにシリアル化すると述べています (各ページで「nonNegativeInteger」を検索します)。

DataContractSerializer何らかの理由で使用したくない場合は、生成されたプロキシ クラスがpartialクラスであることを利用し、別のプロパティ (intまたはlong) を作成して、WCF がそのフィールドをシリアル化/逆シリアル化する方法に影響を与えずに変換ロジックをカプセル化することをお勧めします。

ところで:そのstring変換が本当に気になる場合は、この問題を CodePlex に投票してください。

于 2012-11-26T17:24:14.610 に答える