2017-07-02 18 views
0

オプションのパラメータを使用してWebMethodを構築したいとします。C#オプションのパラメータを使用するWebサービスメソッド

私はMessageNameを設定する方法を知っていました。

[WebMethod(MessageName = "Default")] 
public void SearchPerson(String finger_print_base64) 
{ 

} 

[WebMethod(MessageName = "AddThreshold")] 
public void SearchPerson(String finger_print_base64,int threshold) 
{ 

} 

しかし、同じタイプの2つのパラメータを設定したいとします。

[WebMethod(MessageName = "AddThreshold")] 
public void SearchPerson(String finger_print_base64,int threshold) 
{ 

} 

[WebMethod(MessageName = "AddMinMatches")] 
public void SearchPerson(String finger_print_base64,int mini_matches) 
{ 

} 

Visual Studioでエラーが表示されました。

あなたは、同じシグネチャを持つトウ方法を有する

+1

エラーはクリアされていますか?あなたは何を達成しようとしていますか? – Sybren

+0

同じ署名を持つ3つの方法があります。コンパイラがそれらが異なっているとあなたがどのように認識していると思いますか? 'MessageName'プロパティは* webサービス*で*メソッドオーバーロード*ですが、コードは最初にコンパイルする必要があります。 –

+0

webmethodsの名前ではなくメソッドの宣言に焦点を当てるべきです。非常に明白なエラー、あなたは同じ署名を持つメソッドを持っています。 – ngeksyo

答えて

0

「SearchPerson既にパラメータ の同じタイプの方法をHAVA」は、少なくとも一つのパラメータのデータ・タイプを変更したり(ブールのような別のパラメータを追加1) !

パラメータ名の変更は解決策ではありません。

0

最初に:Webメソッドのオーバーロードはサポートされていません.IISはこれを処理できません。

コンパイラは、同じクラスの下で、同じ名前とシグネチャを持つトウまたはそれ以上のメソッドを構築することはできません。そのため、「dll」ファイルのメソッドを混乱させることはありません。 ,,

あなたがインターフェイスや抽象クラスを使用して、新しい三つのクラスにそれからメソッドをオーバーライドし、あなたのメソッドを呼び出すと、それらを呼び出したい場合:)

「MessageNameには、」ただ、連合国

です

いいえオーバーロードされていません。メソッド名が(アドレス、またはURLなど)になったため、アプリケーションはそのシグネチャ、プログラミング機能、またはプログラミング言語さえも気にすることなくルーティングされます。

関連する問題