C# 将PaymentDetailSiteType数组传递给PayPalAPI

C# 将PaymentDetailSiteType数组传递给PayPalAPI,c#,paypal,C#,Paypal,我正在使用ASP.NETC#4.0中的PayPal沙盒。我添加了以下web参考: https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl 如果我有1件物品(请给我2件t恤),我可以将其传递给PayPal对象并完成交易,而不会出现任何问题: var item = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType { Quantity = 2,

我正在使用ASP.NETC#4.0中的PayPal沙盒。我添加了以下web参考:

 https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl 
如果我有1件物品(请给我2件t恤),我可以将其传递给PayPal对象并完成交易,而不会出现任何问题:

       var item = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType
        {
            Quantity = 2, //etc...etc
        };
         var paymentDetails = new  PayPalAPIHelper.PayPalWS.PaymentDetailsType();
        paymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[]{item};
现在我的困境是当一个顾客想要不同的东西(一件t恤,一条裤子)时。现在我需要多个PaymentDetailSiteType对象来传递给paymentDetails对象。我试过这个:

        //now i have an array of different items 
        var items = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[3];
        items[0].Description = "T-shirt";
        items[1].Description = "Jeans";
        paymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[]{items};
我得到这个错误:

       Cannot implicitly convert type 'PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[]' 
       to 'PayPalAPIHelper.PayPalWS.PaymentDetailsItemType'    
我可以这样做,它编译:

   paymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[]{items[0],items[1]};
但当我运行它时,当我调用PayPal服务时,元素“Quantity”中的数据类型“”不匹配:

            PayPalAPIHelper.PayPalWS.PaymentDetailsType paymentDetails = new PayPalAPIHelper.PayPalWS.PaymentDetailsType();

        paymentDetails.PaymentDetailsItem = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[] { items[0],items[1] };

        reqDetails.PaymentDetails = new PayPalAPIHelper.PayPalWS.PaymentDetailsType[] { paymentDetails };

        PayPalAPIHelper.PayPalWS.SetExpressCheckoutReq req = new PayPalAPIHelper.PayPalWS.SetExpressCheckoutReq()
        {
            SetExpressCheckoutRequest = new PayPalAPIHelper.PayPalWS.SetExpressCheckoutRequestType()
            {
                Version = Version,
                SetExpressCheckoutRequestDetails = reqDetails
            }
        };

        // query PayPal and get token
         //error occurs here
        PayPalAPIHelper.PayPalWS.SetExpressCheckoutResponseType resp = BuildPayPalWebservice().SetExpressCheckout(req); //this is where the error occurs

如何将多种类型传递给PayPal API web服务,以便用户可以订购不同的商品?首先,您已经有了一个数组,因此仅仅为了分配到
paymentDetails中而创建一个新数组是没有意义的。PaymentDetailsItem

var items = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[3];
…
paymentDetails.PaymentDetailsItem = items;  // this is wrong: new PaymentDetailsItemType[]{items};
通过编写
new PaymentDetailsItemType[]{items}
,您可以创建一个新数组,并尝试使用另一个数组
items
(类型
PaymentDetailsItemType[]
)的内容初始化其第一个项目(类型
PaymentDetailsItemType
),因此不兼容

其次,确保为数组中的所有项填充所有必需的属性。最有可能的情况是,在你的一件t恤和一条牛仔裤的例子中,你应该:

items[0].Description = "T-shirt";
items[0].Quantity = 1;
items[1].Description = "Jeans";
items[1].Quantity = 1;

谢谢你的回复,但我不确定我是否理解你的答案。如果它试图创建一个新的数组,比如这个新的PaymentDetailsItemType[]{items},它将不会像我在问题中提到的那样编译。你能再详细解释一下,告诉我如何将我的items数组传递到我的paymentDetails.PaymentDetailsSitems集合吗?原谅我,现在是星期天早上,所以我的头脑还在清醒:)喝杯咖啡,再读一遍我的前半部分答案。您要查找的是:
paymentDetails.PaymentDetailsItem=items-只需将
变量(数组类型)分配到
paymentDetails.PaymentDetailsItem
属性(相同数组类型)。我的咖啡和im都很好。我实现了您的更改,但仍然得到数据类型“”不匹配的元素“数量”错误无终止…提醒我在决定工作之前醒来…我已修复它。谢谢你的帮助