C# 为自定义类加载自定义列表类

C# 为自定义类加载自定义列表类,c#,list,C#,List,我有一个类包含一个问题,另一个是一个问题类列表。我的目标是能够调用问题列表类的构造函数,并将文件路径传递给包含55个问题信息的CSV。然后调用应获取此信息并生成与数据相关的问题对象列表 我的信息保存在一个字符串数组中,但是我不确定如何将这些数据分配给新的问题对象,这样我就能够从问题列表的类实例中引用单个问题 有人知道如何进行吗? 以下是我目前的代码: class QuestionBank : List<Question> { public QuestionBank()

我有一个类包含一个问题,另一个是一个问题类列表。我的目标是能够调用问题列表类的构造函数,并将文件路径传递给包含55个问题信息的CSV。然后调用应获取此信息并生成与数据相关的问题对象列表

我的信息保存在一个字符串数组中,但是我不确定如何将这些数据分配给新的问题对象,这样我就能够从问题列表的类实例中引用单个问题

有人知道如何进行吗? 以下是我目前的代码:

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会更好。