1

ASP.NET WebServices を使用すると、IDictionary の xml シリアル化がサポートされていないため、既定では IDictionary オブジェクトを渡すことができません。辞書をシリアル化するさまざまな方法を見つけました ( http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspxhttp://blogs.msdn.com/psheill/archive/2005/04 /09/406823.aspxhttp://www.mattberther.com/2004/06/14/serializing-an-iditionary-object/ )しかし、これをAsp.NET Webにフックする方法が見つかりませんメソッド。

WebMethods で IDictionaries を使用できるように接続する方法はありますか?

4

2 に答える 2

0

これらのメソッドの呼び出し方法によって異なりますが、「Web参照」で.net 2.0メソッドを使用すると、WSDLで生成されたクラスが部分的であることがわかります。(Web参照名)​​.csファイルを作成し、次のようにします。


public partial class WebReferenceName : System.Web.Services.Protocols.SoapHttpClientProtocol 
{
    // Overload the WSDL generated method that only takes a simple array
    public ReturnType MethodName(List  collection)
    {
        // redirect the call to the wsdl generated method with the appropriate parameters
        return this.MethodName(collection.ToArray());
    }
}

オーバーロードすると、どちらのタイプのコレクションでもメソッド名を呼び出すことができます

Webサービス側では、単純なコレクションからより強力なコレクションに戻すことができます。おそらく、より強力なコレクションctorを使用します。ctorの1つは、おそらく単純なコレクションを消費します。

于 2009-02-12T18:23:22.260 に答える
0

問題は、辞書をどこに渡したいかということです。ディクショナリをシリアル化する方法をサービスに教えたいだけの場合は、ディクショナリ クラスに IXmlSerializable インターフェイスを実装し、好きな方法でシリアル化します。

問題はクライアントにあります。Java クライアントは、送信したものをどのようにデシリアライズする必要がありますか? さらに言えば、.NET クライアントはどのようにしてその方法を知るのでしょうか? 古い ASMX Web サービスを使用して、クライアントに何か特別なことをさせる良い方法はありません。これは、WCF が発明された多くの理由の 1 つです。

于 2009-02-14T18:54:20.263 に答える