我在WCF(c#)中创建了一个简单的RESTful应用程序。当我使用(GET)填充时,我收到了此错误
"对象引用未设置为对象的实例"。
我收到 public PRRequestData[] getAllPR()
{
List<PRRequestData> list = new List<PRRequestData>();
try
{
string sqlSelect = "SELECT DocEntry, Comments, ReqDate FROM OPRQ";
APP.strCommand = sqlSelect;
DataTable dt = new DataTable();
dt = APP.Ds.Tables[0];
foreach (DataRow row in dt.Rows)
{
// Person target = Activator.CreateInstance();
PRRequestData target = new PRRequestData();
target.requiredDate = row["ReqDate"].ToString();
target.remarks = row["Comments"].ToString();
target.docEntry = row["DocEntry"].ToString();
// DataColumnAttribute.Bind(row,target);
sqlSelect = "SELECT ItemCode, Quantity, Price, VendorNum, TaxCode FROM PRQ1 WHERE DocEntry = '" + row["DocEntry"].ToString() + "' ";
APP.strCommand = sqlSelect;
for (var i = 0; i < APP.Ds.Tables[0].Rows.Count; i++)
{
target.DocumentLines[0].itemCode = "";
}
list.Add(target);
}
return list.ToArray();
}
catch (Exception e)
{
e.ToString();
}
return list.ToArray();
部分的错误。
这是我的代码:
[DataContract(Namespace = "")]
public class PRRequestData
{
[DataMember]
public string docEntry { get; set; }
[DataMember]
public string remarks { get; set; }
[DataMember]
public string requiredDate { get; set; }
//[DataMember]
//public int rowcount { get; set; }
[DataMember]
public RequestDataDetails[] DocumentLines;
}
[DataContract]
public class RequestDataDetails
{
[DataMember]
public string itemCode { get; set; }
[DataMember]
public decimal quantity { get; set; }
[DataMember]
public decimal price { get; set; }
[DataMember]
public string supplier { get; set; }
[DataMember]
public string taxcode { get; set; }
}
这是我的DataContract源代码:
{{1}}
答案 0 :(得分:2)
您似乎没有初始化此属性
[DataMember]
public RequestDataDetails[] DocumentLines;
我建议您使用List而不是RequestDataDetails [],因为无论如何您必须使用内部列表。
在for循环之前初始化RequestDataDetails列表以从查询中填充它。
List<RequestDataDetails> requestDetails = new List<RequestDataDetails>
然后更改for循环以添加到该列表而不是设置数组,即时通讯使用您正在执行的任务,不确定它是否符合您的预期,只需告诉我它是否符合您的需求。< / p>
requestDetails.add(new RequestDataDetails { itemCode = "" });
而不是
target.DocumentLines[0].itemCode = "";
然后在for循环之后将列表转换为数组并将其分配给target
target.DocumentLines = requestDetails.ToArray();
希望它有效!