2013-07-09 59 views
1

我有哪個型號CSV格式上載一個類(我使用的FileHelpers庫):添加到列表導致空引用

[DelimitedRecord(",")] 
public class CSVModel 
{ 
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)] 
    public string Field1; 
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)] 
    public string Field2; 
} 

然後,我有一個類來顯示結果一個文件可以成功上傳 - - 它僅僅取消當

public class UploadResult 
{ 
    public List<CSVModel> InvalidField; 
    public List<CSVModel> Valid; 
} 

我不會去詳細講述我如何實現FileHelpers,因爲它所有的工作:我解析文件一行接一行之後上傳我嘗試將CS​​V模型的一個實例添加到列表中,如下所示:

public static UploadResult ProcessCSV(CSVModel[] records) 
{ 
    UploadResult uploadResult = new UploadResult(); 

    for (int i = 1; i < records.Length; i++) 
    { 
     CSVModel csvModel = records[i]; 

     // check stuff 

     uploadResult.Valid.Add(csvModel); // this is where it breaks 
    } 

    return uploadResult; 
} 

異常給我的只是空引用。我可能做錯了什麼?

編輯:當我調試,「csvModel」絕對不爲空,當我試圖把它添加到列表

+0

'uploadResult.Valid' null? – Blorgbeard

回答

2

Validnull,你必須初始化:

public class UploadResult 
{ 
    public List<CSVModel> InvalidField = new List<CSVModel>(); 
    public List<CSVModel> Valid = new List<CSVModel>(); 
} 

或通過構造函數:

public class UploadResult 
{ 
    public UploadResult() 
    { 
     InvalidField = new List<CSVModel>(); 
     Valid = new List<CSVModel>(); 
    } 
    public List<CSVModel> InvalidField; 
    public List<CSVModel> Valid; 
} 
+0

只能在12分鐘內接受答案,但是這解決了它,謝謝 – user982119

1

您正在初始化UploadResult而不是List屬性。嘗試這樣的:

UploadResult uploadResult = new UploadResult { 
    InvalidField = new List<CSVModel>(), 
    Valid = new List<CSVModel>() 
}; 
+1

如果您這樣做並在其他地方使用UploadResult,則需要記住初始化列表。 @蒂姆的方法可能會更好。 – mao47

相關問題