You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何返回已完成数据填充的ArasOrder类型对象

核心问题

你当前定义的aras()方法使用了void作为返回值类型,该类型标识方法执行后不返回任何输出;同时ArasOrder对象的实例化位置在foreach循环外部,多轮循环时会反复覆盖对象字段,最终仅保留最后一条遍历数据的赋值结果。

具体修改步骤
  • 调整方法返回值类型:如果仅需要返回单个填充完成的ArasOrder对象,将方法签名的void替换为ArasTEST.Order;如果需要返回遍历参数生成的所有订单对象,将返回值替换为List<ArasTEST.Order>
  • 修正对象实例化位置:将ArasOrder的实例化代码移到foreach循环内部,避免多轮循环覆盖之前的赋值结果
  • 在所有业务逻辑执行完成后,使用return关键字返回填充完成的目标对象

代码示例

场景1:返回单条ArasOrder(仅保留最后一轮循环的赋值结果)

public class ArasDeneme
{
    // 将void修改为对应的返回类型ArasTEST.Order
    public static ArasTEST.Order aras()
    {
        var ArasService = new ArasTEST.Service();
        var ArasGonderi = new ArasTEST.ShippingOrder();
        var parametreler = ArasKargoTEST.ParametreGet();
        string newentegrationcode = "";
        // 提前声明对象引用,用于存储最后一轮的赋值结果
        ArasTEST.Order ArasOrder = null;
        foreach (var item in parametreler)
        {
            var encode = entegrationcode();
            var YeniGelenDesi = DesiHesabi(item.WebSiparisNo);
            newentegrationcode = "123" + encode;
            
            // 每轮循环新建实例,避免值被覆盖
            ArasOrder = new ArasTEST.Order();
            ArasOrder.UserName = "";
            ArasOrder.Password = "";
            ArasOrder.ReceiverName = item.KargoAdSoyad;
            ArasOrder.ReceiverPhone1 = item.KargoTelefon;
            ArasOrder.ReceiverCityName = item.KargoIlAdi;
            ArasOrder.ReceiverTownName = item.KargoIlceAdi;
            ArasOrder.ReceiverAddress = item.KargoAdres;
            ArasOrder.TradingWaybillNumber = item.WebSiparisNo;
            ArasOrder.PieceCount = "1";
            ArasOrder.IntegrationCode = newentegrationcode;
            ArasOrder.PayorTypeCode = "1";
            ArasOrder.IsWorldWide = "0";
            ArasOrder.IsCod = "0";
            ArasOrder.VolumetricWeight = YeniGelenDesi;
            ArasOrder.SenderAccountAddressId = "1071";
            
            ArasTEST.PieceDetail[] ArasPieceDetails = new ArasTEST.PieceDetail[1];
            ArasTEST.PieceDetail ArasPieceDetail1 = new ArasTEST.PieceDetail();
            ArasPieceDetail1.BarcodeNumber = newentegrationcode;
            ArasPieceDetail1.VolumetricWeight = YeniGelenDesi;
            ArasPieceDetail1.Weight = "1";
            ArasPieceDetail1.Description = "";
            ArasPieceDetails[0] = ArasPieceDetail1;
            ArasOrder.PieceDetails = ArasPieceDetails;
            
            var ArasOrderInfo = new ArasTEST.Order[1];
            ArasOrderInfo[0] = ArasOrder;
            // 注意:原代码此处SetOrder传入的是空参数,实际需要传入组装好的订单信息才能正常调用接口
            var takipNoResult = ArasService.SetOrder("", "", "");
            var ArasOrderResultInfo = takipNoResult[0];
            var SonucKodu = takipNoResult[0].ResultCode;
            var SonucMesaji = takipNoResult[0].ResultMessage;
            var SonucInvoiceKey = takipNoResult[0].InvoiceKey;
        }
        // 循环结束后返回填充完成的对象
        return ArasOrder;
    }
}

场景2:返回所有循环生成的ArasOrder集合(推荐,适配批量遍历参数的业务逻辑)

public class ArasDeneme
{
    // 返回值改为List<ArasTEST.Order>存储多条订单
    public static List<ArasTEST.Order> aras()
    {
        var ArasService = new ArasTEST.Service();
        var ArasGonderi = new ArasTEST.ShippingOrder();
        var parametreler = ArasKargoTEST.ParametreGet();
        string newentegrationcode = "";
        // 初始化集合存储所有生成的订单
        List<ArasTEST.Order> orderList = new List<ArasTEST.Order>();
        foreach (var item in parametreler)
        {
            var encode = entegrationcode();
            var YeniGelenDesi = DesiHesabi(item.WebSiparisNo);
            newentegrationcode = "123" + encode;
            
            // 每轮循环新建订单实例
            ArasTEST.Order ArasOrder = new ArasTEST.Order();
            ArasOrder.UserName = "";
            ArasOrder.Password = "";
            ArasOrder.ReceiverName = item.KargoAdSoyad;
            ArasOrder.ReceiverPhone1 = item.KargoTelefon;
            ArasOrder.ReceiverCityName = item.KargoIlAdi;
            ArasOrder.ReceiverTownName = item.KargoIlceAdi;
            ArasOrder.ReceiverAddress = item.KargoAdres;
            ArasOrder.TradingWaybillNumber = item.WebSiparisNo;
            ArasOrder.PieceCount = "1";
            ArasOrder.IntegrationCode = newentegrationcode;
            ArasOrder.PayorTypeCode = "1";
            ArasOrder.IsWorldWide = "0";
            ArasOrder.IsCod = "0";
            ArasOrder.VolumetricWeight = YeniGelenDesi;
            ArasOrder.SenderAccountAddressId = "1071";
            
            ArasTEST.PieceDetail[] ArasPieceDetails = new ArasTEST.PieceDetail[1];
            ArasTEST.PieceDetail ArasPieceDetail1 = new ArasTEST.PieceDetail();
            ArasPieceDetail1.BarcodeNumber = newentegrationcode;
            ArasPieceDetail1.VolumetricWeight = YeniGelenDesi;
            ArasPieceDetail1.Weight = "1";
            ArasPieceDetail1.Description = "";
            ArasPieceDetails[0] = ArasPieceDetail1;
            ArasOrder.PieceDetails = ArasPieceDetails;
            
            var ArasOrderInfo = new ArasTEST.Order[1];
            ArasOrderInfo[0] = ArasOrder;
            var takipNoResult = ArasService.SetOrder("", "", "");
            var ArasOrderResultInfo = takipNoResult[0];
            var SonucKodu = takipNoResult[0].ResultCode;
            var SonucMesaji = takipNoResult[0].ResultMessage;
            var SonucInvoiceKey = takipNoResult[0].InvoiceKey;
            
            // 填充完成的订单加入集合
            orderList.Add(ArasOrder);
        }
        // 循环结束返回所有订单集合
        return orderList;
    }
}

注意:如果方法不是静态类型,返回对象的逻辑完全一致,仅需要调整对应方法签名的返回值类型即可。调用方法时直接用对应类型的变量接收返回结果,就可以拿到填充完成的ArasOrder对象。

内容的提问来源于stack exchange,提问作者codergirl3434

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:27:17