我创建了一个包含类型列表的类女巫,并派生到我创建的另一个类.这看起来如下:
namespace MyIntegretyCheck.Common
{
/// <summary>
/// Description of PolicyErrors.
/// </summary>
public partial class PolicyErrorEndingDates
{
public int ID_P {get;set;}
public DateTime DT_S_E {get;set;}
public DateTime DT_SC_E {get;set;}
public List<PolicyErrorDescr> Errors {get;set;}
}
public partial class PolicyErrorDescr
{
public string Field1{get;set;}
public string Field2 {get;set;}
public string F1IsThanF2 {get;set;}
public string Message {get;set;}
public int ErrorLevel {get;set;} //0= Info | 1= Warning | 2= Error
}
}
Run Code Online (Sandbox Code Playgroud)
现在我创建了一个类型列表PolicyErrorEndingDates
,添加了一个条目,然后尝试添加其嵌套列表错误的条目,如下所示:
public List<PolicyErrorEndingDates> MyPolicyEndingDates()
{
DAL.PolicyEndingDates ped = new DAL.PolicyEndingDates();
List<PolicyErrorEndingDates> MyErrors = new List<PolicyErrorEndingDates>();
foreach(var m in ped.CheckTables())
{
bool HasError = false;
PolicyErrorEndingDates p = new PolicyErrorEndingDates();
p.ID_P = m.ID_P;
if(m.DT_S_E != m.DT_SC_E)
{
PolicyErrorDescr e = new PolicyErrorDescr();
HasError = true;
e.Field1 = "DT_S_E";
e.Field2 = "DT_SC_E";
e.Message = "blablabla...";
e.ErrorLevel = 3;
p.Errors.Add(e);
}
if(HasError)
MyErrors.Add(p);
}
}
Run Code Online (Sandbox Code Playgroud)
调试器在我内部Object reference not set to an instance of an object
的行中与消息一起崩溃.我做错了什么?如何创建嵌套列表的实例?p.Errors.Add(e);
if
您是否List<PolicyErrorDescr>
为Errors属性分配了一个实例?
首先,我可能会Errors
从外部将集合设置为只读,也就是说,列表可以更改,但是您不能给它一个新的列表.
我将通过使setter私有来做:
public List<PolicyErrorDescr> Errors { get; private set; }
^-----^
this
Run Code Online (Sandbox Code Playgroud)
然后我将创建一个构造函数并从中为该属性分配一个集合实例:
public PolicyErrorEndingDates()
{
Errors = new List<PolicyErrorDescr>();
}
Run Code Online (Sandbox Code Playgroud)
这应该处理null引用异常.
归档时间: |
|
查看次数: |
4232 次 |
最近记录: |