当我尝试将对象添加到对象内的列表时,即使对象的所有属性都包含数据,我仍然会收到NullReferenceException.Classes--
public class OrderInfo
{
public virtual string OrderNum { get; set; }
public virtual string TrackingNum { get; set; }
public virtual DateTime Shipdate { get; set; }
public virtual string Cost { get; set; }
public virtual string ShipMethod { get; set; }
public virtual string ShipService { get; set; }
public virtual string Country { get; set; }
public virtual decimal Weight { get; set; }
public virtual List<OrderItemInfo> OrderiTems { get; set; }
public void AddShipmentItem(OrderItemInfo oi)
{
this.OrderiTems.Add(oi); // NULL Reference HERE
}
}
public class OrderItemInfo
{
public virtual string OrderItemCode { get; set; }
public virtual decimal? Quantity { get; set; }
public virtual decimal? Cost { get; set; }
public virtual decimal? Weight { get; set; }
public virtual string Store { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,如果有任何可以为空的数据,我会捕获代码.
private static OrderInfo GetOrderInfo(DataRow dr)
{
SqlConnection ShipworksConnectionString =
SqlCommand ShipworksCmd = new SqlCommand("SELECT OrderItem.Code,
InternationalShipmentCostAnalysisApp.OrderInfo ip = new InternationalShipmentCostAnalysisApp.OrderInfo
{
OrderNum = (dr[0] is DBNull) ? String.Empty : dr[0].ToString(),
TrackingNum = (dr[1] is DBNull) ? String.Empty : dr[1].ToString(),
Shipdate = (dr[2] is DBNull) ? DateTime.MinValue : Convert.ToDateTime(dr[2]),
Cost = (dr[3] is DBNull) ? String.Empty : dr[3].ToString(),
ShipMethod = (dr[4] is DBNull) ? String.Empty : dr[4].ToString(),
ShipService = (dr[5] is DBNull) ? String.Empty : dr[5].ToString(),
Country = (dr[6] is DBNull) ? String.Empty : dr[6].ToString(),
Weight = (dr[7] is DBNull) ? 0 : Convert.ToDecimal(dr[7])
};
ShipworksConnectionString.Open();
SqlDataReader rdr = ShipworksCmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(rdr);
rdr.Close();
ShipworksConnectionString.Close();
foreach (DataRow item in dt.Rows)
{
if (item != null)
{
InternationalShipmentCostAnalysisApp.OrderItemInfo i = new InternationalShipmentCostAnalysisApp.OrderItemInfo
{
OrderItemCode = (item[0] is DBNull) ? String.Empty : item[0].ToString(),
Quantity = (item[1] is DBNull) ? 0 : Convert.ToDecimal(item[1]),
Cost = (item[2] is DBNull) ? 0 : Convert.ToDecimal(item[2]),
Weight = (item[3] is DBNull) ? 0 : Convert.ToDecimal(item[3]),
Store = (item[4] is DBNull) ? String.Empty : item[4].ToString()
};
ip.AddShipmentItem(i);
}
}
return ip;
}
Run Code Online (Sandbox Code Playgroud)
Han*_*ney 19
看起来你永远不会设置你的属性......你把它定义为一个List<OrderItemInfo> 类型,但你永远不会将它初始化为该类型的实例.尝试在构造函数中初始化它:
public class OrderInfo
{
public OrderInfo
{
OrderiTems = new List<OrderItemInfo>();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
OrderiTems是null.
public virtual List<OrderItemInfo> OrderiTems { get; set; }
Run Code Online (Sandbox Code Playgroud)
尝试OrderiTems在构造函数中实现set/get或存储空列表.
| 归档时间: |
|
| 查看次数: |
25543 次 |
| 最近记录: |