1

私のWebメソッドはいくつかの値をlistとして返しますが、これらのWebメソッドを呼び出している間、それを配列オブジェクトとして取得します。listと同じように取得するにはどうすればよいですか。私のWebメソッドは次のようになります。

        [WebMethod]
        public List<ReturnList> GetReturnList()
        {
           List<ReturnList> ReturnList=new List<ReturnList>();
        //Calcuations
            return ReturnList;
        }
4

3 に答える 3

5

Webメソッド定義には何も欠けていません。リストは、SOAPとその定義および構造化の方法により、配列に変換されます。メソッドを使用するときに本当にリストが必要な場合は、配列を使用しているリストに変換し直してください。また、そのWebメソッドをラップして、配列の代わりにList<>を返すことができるWebサービスラッパーを作成することもできます。メソッド本体は、Webサービスを呼び出し、配列をList<>に変換して返すだけです。

こちらをチェック

于 2012-10-22T11:03:10.630 に答える
3

List は、言語固有のデータ構造に近いものです。すべての言語固有のデータ型は、XML データ型である言語に依存しないデータ型にマップされます。

要求/応答が発生すると、XML マッピングが発生するため、プラットフォームと言語による相互運用性が実現されます。

The reason that the List kind of data types are not getting as the same data type,
  because there is no equivalent XML data type available.

したがって、要件を満たすために、リストを配列に、またはその逆に変換するユーティリティを使用できます

于 2012-10-22T11:47:50.597 に答える
0

  [WebMethod]
    public static Details[] GetData()
    {
        DataSet dsDetails = new DataSet();
        List<Details> details = new List<Details>();
        try
        {
            Database db = DatabaseFactory.CreateDatabase("String");
            DbCommand dbCommand = db.GetStoredProcCommand("GetDetails");
            
            dsDetails = (DataSet)db.ExecuteDataSet(dbCommand);
            foreach (DataRow dtrow in dsDetails.Tables[0].Rows)
            {
                Details report = new Details();
                report.ID = Convert.ToInt32(dtrow["ID"].ToString());
                report.ReferenceID = Convert.ToInt32(dtrow["ReferenceID"].ToString());
                report.ProductID = dtrow["Name"].ToString();
                
                details.Add(report);
            }
        }
        catch (Exception)
        {
        }
        finally
        {

        }

        return details.ToArray();
    }

于 2015-10-20T12:36:08.750 に答える