【发布时间】:2015-10-28 20:37:46
【问题描述】:
我有一个返回 Response2 的类,其中只包含我关心的两个定义:
Response3.Id
Response3.Name
但是,此数据作为列表返回,b/c 我的类定义如下所示:
[DataContract]
public class Response2
{
[DataMember(Name = "done")]
public bool done;
[DataMember(Name = "records")]
public List<Response3> r3entry;
}
[DataContract]
public class Response3
{
[DataMember(Name = "Id")]
public string strId { get; set; }
[DataMember(Name = "Name")]
public string strName { get; set; }
}
现在我有一个要遍历的字符串列表,但是当我尝试执行以下操作时:
Response2 propResponse2 = MakeRequest2(propertyRequest2, sfToken);
foreach (string strId in propResponse2)
{
System.Windows.Forms.MessageBox.Show(strId.Name)
}
我收到一条错误消息:
foreach 语句无法对“Response2”类型的变量进行操作,因为“Response2”不包含“GetEnumerator”的公共定义
我认为这意味着我需要在类中的 DataContract 中添加一些内容,但我不确定在哪里执行此操作以便可以正确迭代。
有什么帮助吗?
【问题讨论】:
-
您一定来自
JavaScript世界。 --- 我假设propResponse2的类型是Response2?如果是这样,那么我假设您正在尝试遍历该类的数据成员?foreach不会那样做。而且没有这样的野兽。我假设您正在尝试序列化课程。为此,请使用DataContractSerializer或NetDataContractSerializer -
propResponse2是如何定义的? -
@UweKeim,从错误消息中很明显它被声明为
Response2 -
@UweKeim - 我用定义更新了问题
标签: c# list loops datacontractserializer datacontract