2010-12-26 19 views
0

Javaで書かれたWebサービスへのサービス参照を作成しています。生成されたクラスは現在、Webサービスで使用されているJavaの大文字と小文字の区別に従います。たとえば、クラス名はPascalCaseではなくcamelCaseです。WCFサービス参照のケーシングの変更

サービス参照から目的のケーシングを取得する方法はありますか?

明確化:WSEベースのサービスで

、1はこのように、.NETの標準的なケースを提供し、外部のWebサービスによって提示されたJavaの命名にマッピングするXmlElementAttributeを使用して生成されたReference.csを変更できます。

[System.Xml.Serialization.XmlElementAttribute("resultType", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
[System.Runtime.Serialization.DataMember] 
public virtual MyResultType ResultType 
{ ... } 

プロキシコードを生成するか、生成後に変更するカスタムコードを書くことなく、メンテナンスにあまり重大ではありません。

私が後にしたのは、WCFで生成されたクライアントプロキシを.NETのケーシング規則を使用して呼び出しアプリケーションに提示するための1つ以上のオプションです.WSEで以前と同じように実現しました。うまくいけば手作業の労力が少なくて済みます。まあ

+1

Huh?サービス参照を作成すると、そのサービスのケーシングがあります。常に。 –

+0

.NETケーシングをアプリケーションの他の部分に提示する最も簡単な道を探していて、これまでWSEでこれを達成した例を示しました。 –

答えて

0

、あなたのWCFクライアントプロキシが部分クラスなので、あなたは常に各javaCasedMethodNameためPascalCasedMethodNameを実装して、同じクラスのための第二のファイルを追加して、ちょうどあなたの新しいメソッドからJavaメソッドを呼び出すことができます。

public partial class MyClientProxy 
{ 
    ...... 
    public MyResultType GetResultType(string inputParam) 
    { 
     return this.getResultType(inputParam); 
    } 
    ...... 
} 

は少し冗長なようだ - しかし、それは本当に動作するはずです、私は思います。コードは別のファイルに保存されるため、クライアントプロキシを再作成すると上書きされません。また、部分クラスの後半部分であるため、クライアントコードのクラス定義に「マージされます」電話する。

+0

問題は、メソッド名だけでなく、誤って(.NETの場合)型がケースに入っていることです。入力と出力にはかなり深いクラス階層があります。そのため、生成されたクラスと正しいクラスのクラスをコピーすることは問題になります。 –

関連する問題