这个问题在这里已有答案:
我正在努力为居住在StorageFile
内的MainFolderDisplay
设定价值。但问题是我像吼叫一样异常。我在做什么错了?
System.NullReferenceException:'对象引用未设置为对象的实例。'
控制器:
var mainFolder = new MainFolderDisplay();
mainFolder.StorageFile.Add(new StorageFile
{
AwsUniqueFileName = "asasas",
FileId = 0,
FolderType = 0,
RelatedFolderId = 0,
UserDisplayFileName = "",
UserId = 0,
});
模型:
using Test.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Test.ViewModels
{
public class MainFolderDisplay
{
public int MainFolderId { get; set; }
public string MainFolderName { get; set; }
public int UserId { get; set; }
public List<SubFolder> SubFolders { get; set; }
public List<StorageFile> StorageFile { get; set; }
}
public class SubFolderDisplay
{
public int SubFolderId { get; set; }
public string SubFolderName { get; set; }
public int MainFolderId { get; set; }
public List<StorageFile> StorageFile { get; set; }
}
public class StorageFileDisplay
{
public int FileId { get; set; }
public string AwsUniqueFileName { get; set; }
public string UserDisplayFileName { get; set; }
public int UserId { get; set; }
public int FolderType { get; set; }
public int RelatedFolderId { get; set; }
}
}
在使用之前,您的“StorgaeFile”属性未初始化:
var mainFolder = new MainFolderDisplay();
mainFolder.StorageFile = new List<StorageFile>
{
new StorageFile
{
AwsUniqueFileName = "asasas",
FileId = 0,
FolderType = 0,
RelatedFolderId = 0,
UserDisplayFileName = "",
UserId = 0,
}
};
更好的方法是更改“MainFolderDisplay”类实现来处理初始化:
public class MainFolderDisplay
{
private List<StorageFile> _storageFile;
public int MainFolderId { get; set; }
public string MainFolderName { get; set; }
public int UserId { get; set; }
public List<StorageFile> StorageFile
{
get => _storageFile ?? (_storageFile = new List<StorageFile>());
set => _storageFile = value;
}
}
现在使用它而不用担心:
mainFolder.StorageFile.Add(
new StorageFile
{
AwsUniqueFileName = "asasas",
FileId = 0,
FolderType = 0,
RelatedFolderId = 0,
UserDisplayFileName = "",
UserId = 0,
});
StorageFile列表未初始化。
mainFolder.StorageFile = new List<StorageFile>();
我建议将此属性重命名为StorageFiles以暗示它是一个集合。
mainFolder.StorageFiles = new List<StorageFile>();