C# 为自定义类加载自定义列表类
我有一个类包含一个问题,另一个是一个问题类列表。我的目标是能够调用问题列表类的构造函数,并将文件路径传递给包含55个问题信息的CSV。然后调用应获取此信息并生成与数据相关的问题对象列表 我的信息保存在一个字符串数组中,但是我不确定如何将这些数据分配给新的问题对象,这样我就能够从问题列表的类实例中引用单个问题 有人知道如何进行吗? 以下是我目前的代码:C# 为自定义类加载自定义列表类,c#,list,C#,List,我有一个类包含一个问题,另一个是一个问题类列表。我的目标是能够调用问题列表类的构造函数,并将文件路径传递给包含55个问题信息的CSV。然后调用应获取此信息并生成与数据相关的问题对象列表 我的信息保存在一个字符串数组中,但是我不确定如何将这些数据分配给新的问题对象,这样我就能够从问题列表的类实例中引用单个问题 有人知道如何进行吗? 以下是我目前的代码: class QuestionBank : List<Question> { public QuestionBank()
class QuestionBank : List<Question>
{
public QuestionBank()
{
}
public static QuestionBank GetQuestions(string path)
{
using (FileStream fs = File.OpenRead(path))
{
byte[] bytes = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
StringBuilder sb = new StringBuilder();
while (fs.Read(bytes, 0, bytes.Length) > 0)
sb.Append(temp.GetString(bytes));
MessageBox.Show(sb.ToString());
string[] splitText = sb.ToString().Split(',');
}
QuestionBank bank = new QuestionBank()
{
};
return bank;
}
}
我想你正在寻找这样的东西:
public class QuestionBank
{
private string filePath = "test.csv";
public List<Question> Questions = new List<Question>();
public void GetAllQuestions()
{
foreach (var line in File.ReadAllLines(filePath))
{
Questions.Add(new Question
{
Value = line
});
}
}
}
public class Question
{
public string Value { get; set; }
}
手动解析CSV时要小心,如果问题文本中有逗号,拆分将失败。为什么不使用File.ReadAllText或ReadAllLines?可以将属性public List Questions{get;set;}添加到问题库中。在GetQuestions中,只需迭代splitText中的项目。对于每个拆分文本项,您创建一个新问题,并将其添加到问题列表中。使用此解决方案,您可以删除QuestionBank上的:List继承。另外,像奥伯格提到的那样,ReadAllLines会更好。