【问题标题】:Cannot explicitly convert type ‘System.collections.ArrayList’ to mywebservicecall.ServiceReference1.groupitems无法将类型“System.collections.ArrayList”显式转换为 mywebservicecall.ServiceReference1.groupitems
【发布时间】:2017-12-13 09:56:04
【问题描述】:

我正在尝试传递如下所示的数组列表,但出现上述错误。只需传递 myitem 代码就可以正常工作,但我也需要能够传递多个。

这是我的代码:

var deserializedm = JsonConvert.DeserializeObject<List<Mulitipay>>(mpay.ToString());

int num = 0;
ArrayList list = new ArrayList();

foreach (Mulitipay m in deserializedm)
{
    num++;
    string f = m.Fund;
    string a = m.Amount;
    int am = System.Convert.ToInt32(a);
    string g = m.Gl;
    string d = m.Details;


    var itd = new ServiceReference1.glItemDetails();
    itd.fundCode = f;
    itd.additionalReference = reference;


    var its = new ServiceReference1.Data();
    its.description = d;
    its.reference = g;
    its.amountInMinorUnits = am;

    var myitem = new ServiceReference1.sampleGroupItem();
    myitem.lgItemDetails = itd;
    myitem.itemSummary = its;
    myitem.lineId = "tetetetet1232323";
    list.Add(myitem);
}

var alllist = list;

simpleivr.sale = new ServiceReference1.samplesale ();
simpleivr.sale.saleSummary = new ServiceReference1.Data();
simpleivr.sale.saleSummary.description = "stuff1";
simpleivr.sale.saleSummary.reference = "000303";
simpleivr.sale.saleSummary.amountInMinorUnits = 400;
simpleivr.sale.items = new ServiceReference1.SampleGroupItem [] { alllist};

Web 服务(Web 服务的示例不是完整的东西)

/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Order=2)]
[System.Xml.Serialization.XmlArrayItemAttribute("Groupitem" IsNullable=false)]
public SampleGroupItem[] GroupItems{
    get {
        return this.itemsField;
    }
    set {
        this.itemsField = value;
        this.RaisePropertyChanged("Groupitems");
    }
}

【问题讨论】:

    标签: c# web-services c#-4.0 arraylist json.net


    【解决方案1】:

    数组列表类似于List&lt;Object&gt;。您将其分配给SampleGroupItem 类型的数组。您只需要将ArrayList 更改为List&lt;SampleGroupItem&gt;,然后调用方法.ToArray()
    所以你的代码会变成

      var deserializedm = JsonConvert.DeserializeObject<List<Mulitipay>>(mpay.ToString());
            int num = 0;
            List<ServiceReference1.SampleGroupItem> list = new List<ServiceReference1.SampleGroupItem>();
    
            foreach (Mulitipay m in deserializedm)
            {
                num++;
                string f = m.Fund;
                string a = m.Amount;
                int am = System.Convert.ToInt32(a);
                string g = m.Gl;
                string d = m.Details;
    
    
                var itd = new ServiceReference1.glItemDetails();
                itd.fundCode = f;
                itd.additionalReference = reference;
    
    
                var its = new ServiceReference1.Data();
                its.description = d;
                its.reference = g;
                its.amountInMinorUnits = am;
    
                var myitem = new ServiceReference1.sampleGroupItem();
                myitem.lgItemDetails = itd;
                myitem.itemSummary = its;
                myitem.lineId = "tetetetet1232323";
                list.Add(myitem);
            }
    
            simpleivr.sale = new ServiceReference1.samplesale ();
            simpleivr.sale.saleSummary = new ServiceReference1.Data();
            simpleivr.sale.saleSummary.description = "stuff1";
            simpleivr.sale.saleSummary.reference = "000303";
            simpleivr.sale.saleSummary.amountInMinorUnits = 400;
            simpleivr.sale.items = list.ToArray();
    

    【讨论】:

    • 干杯@Mahmoud,我会试试这个,让你知道
    • 很高兴我提供了帮助,您现在应该关闭问题。
    • 我没有足够的分数来投票给你的答案。我可能不得不保持这个问题的开放性,如果您认为否则可能对其他人有用,请告诉我,我会关闭它。
    • 当您关闭问题时,它不会消失,当您通过选择解决您问题的答案来关闭问题时,它将帮助其他人通过在网站中搜索并找到您的解决方案来找出正确的解决方案已解决的问题[已选择答案]
    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多