已回答 从未序列化添加的福彩12选5走势图引用中返回类型为自定义数据协定的IEnumerable

卡托

成员
已加入
2020年5月6日
留言内容
7
编程经验
Beginner
你好,

我是C#的新手,我对Dynamics AX中的X ++经验非常丰富。

我在AX内创建了一个AIF福彩12选5走势图,该福彩12选5走势图返回数据协定值的列表。数据协定由2个字符串参数构成。分配了DataContract属性和DataMember属性。

我创建了一个控制台应用程序,并且能够轻松返回这些值,但是我试图创建一个Web福彩12选5走势图包装程序,该包装程序将使用此AX福彩12选5走势图并将数据合同值返回给第三方应用程序。

我的问题是,在Web福彩12选5走势图上,我无法返回数据协定值,但收到错误消息 system.NotSupportedException:无法序列化接口System.Collections.Generic.IEnumerable`1 *我的数据合约值的名称*

我需要做什么的指示,如何在Web福彩12选5走势图中获取IEnumerable数据协定值列表,以允许将它们正确输出为包含2个字符串值的数据协定列表?

非常感谢你
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
Have to tried returning a 列表<T> instead of an IEnumerable<T>?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
包装数据。如果您有很多这些,Automapper将是您的朋友。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
C#:
class MyContainmentField
{
    public string LeftReactorCore { get; set; }
    public string RightReactorCore { get; set; }
}
:
var list = new List<MyContainmentField>();
:
return list;
 

卡托

成员
已加入
2020年5月6日
留言内容
7
编程经验
Beginner
谢谢您,我开始理解。

这是您更改后的当前代码:

C#:
public class WebService1 : System.Web.Services.WebService

{   

        [WebMethod]

        public List<deliveryNoteInfo> getDeliveryNoteData(

            string      company,

            string      lorryId,

            DateTime    deliveryDate

            )

        {

            // define variables

            PackingSlipServiceReference.BM_PODRequestContract appRequest = new PackingSlipServiceReference.BM_PODRequestContract();

            PackingSlipServiceReference.BM_PackingSlipServiceClient packSlipService = new PackingSlipServiceReference.BM_PackingSlipServiceClient();

            IEnumerable<PackingSlipServiceReference.BM_PODResponseContract> deliveryNoteList = new List<PackingSlipServiceReference.BM_PODResponseContract>();

            PackingSlipServiceReference.CallContext context = new PackingSlipServiceReference.CallContext();

            PackingSlipServiceReference.BM_PODResponseContract deliveryNoteData = new PackingSlipServiceReference.BM_PODResponseContract();

            List<deliveryNoteInfo> packSlipList = new List<deliveryNoteInfo>();

            deliveryNoteInfo    delInfo;



            // set parameter values

            appRequest.parmLorryId = lorryId;

            appRequest.parmDeliveryDate = deliveryDate;

            context.Company = company;



            deliveryNoteList = packSlipService.getDeliveryNotes(context, appRequest);   



            // send these to service and get result

            var enumerator = deliveryNoteList.GetEnumerator();





            while (enumerator.MoveNext())

            {

                deliveryNoteData = enumerator.Current;



                delInfo = new deliveryNoteInfo();



                delInfo.packingSlipId = deliveryNoteData.parmPackingSlipId;

                delInfo.deliveryName = deliveryNoteData.parmDeliveryName;



                packSlipList.Add(delInfo);

            }



            // return list of delivery note data contracts

            return packSlipList;

        }



        class deliveryNoteInfo

        {

            public string packingSlipId { get; set; }

            public string deliveryName { get; set; }

        }

      

}

我收到以下错误:

错误1不一致的可访问性:返回类型'System.Collections.Generic.List<PackingSlipService.WebService1.deliveryNoteInfo>'比方法'PackingSlipService.WebService1.getDeliveryNoteData(string,string,System.DateTime)'的访问性差

我是否想念上面的东西?
 
Last edited:

卡托

成员
已加入
2020年5月6日
留言内容
7
编程经验
Beginner
令人惊讶的是,我已经将类deliveryNoteInfo PUBLIC制成了,这已经解决了该错误。

当我运行该福彩12选5走势图的测试时,它会运行,但会返回以下值:

此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。
<ArrayOfDeliveryNoteInfo xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://TESTPOD.org/"/>

我没有得到数组中返回的数据值,这正常吗?我是否必须在调用程序中操纵此数据列表?
 

卡托

成员
已加入
2020年5月6日
留言内容
7
编程经验
Beginner
你好,

我认为问题只在于我的日期参数格式,在调试时,好像我输入日期01 \ 05 \ 2020以英国日期格式表示5月1日,该福彩12选5走势图正在以美国格式发送日期,因此05 \ 01 \ 2020-我需要做些什么来确保它以英国格式输入?

再次感谢,我现在基本完成了!
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
您的日期格式显然是错误的。您必须将其设置为: MM/dd/yyyy

将其更改为:
your_datetime_variable.ToString("dd/MM/yyyy");
 
最佳 底部