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 の実装方法については詳しく説明しません。すべて機能するためです。ファイルを正常にアップロードできます。CSV モデルのインスタンスを次のようにリストに追加しようとすると壊れるだけです。

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;
}

例外は、null 参照にすぎません。何が間違っている可能性がありますか?

編集:デバッグすると、「csvModel」をリストに追加しようとすると、間違いなくnullではありません

4

2 に答える 2

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;
}
于 2013-07-09T20:25:52.760 に答える
1

UploadResult を初期化していますが、List プロパティは初期化していません。次のようなことを試してください:

UploadResult uploadResult = new UploadResult {
    InvalidField = new List<CSVModel>(),
    Valid = new List<CSVModel>()
};
于 2013-07-09T20:26:42.467 に答える