从文本文件中读取不起作用

Reading from a text file not working

对于我的代码,有 3 个列表集合。一个包含 Employees(参数为 Name/ID)和服务请求(参数为 name/id/description)。然后第三个是分配,它包含来自其他 2 个列表的员工和服务请求(将员工分配给服务请求)。

我已经阅读了 employees/service 请求的工作,但是当我 运行 我的代码时,我收到一个错误 "Object reference not set to an instance of an object." 的作业,我不确定如何修复它。

assignment.Employee.Name = columns[0]; 处的错误点我在想它可能类似于 //assignment.Employee = columns[0]; 将整个员工对象分配给列 [0]。但随后它给出了我无法将字符串转换为 MaintenanceManagementSystem.Employee.

的错误

/阅读员工代码

    public static List<Employee> GetEmployees()
    {
        if (!Directory.Exists(dir))
            Directory.CreateDirectory(dir);

        StreamReader textIn =
            new StreamReader(
                new FileStream(path1, FileMode.OpenOrCreate, FileAccess.Read));

        List<Employee> employees = new List<Employee>();

        while (textIn.Peek() != -1)
        {
            string row = textIn.ReadLine();
            string[] columns = row.Split('|');
            Employee employee = new Employee();
            employee.Name = columns[0];
            employee.ID = columns[1];
            employees.Add(employee);
        }

        textIn.Close();

        return employees;
    }

/ 阅读请求代码

    public static List<ServiceRequest> GetRequest()
    {
        if (!Directory.Exists(dir))
            Directory.CreateDirectory(dir);

        StreamReader textIn =
            new StreamReader(
                new FileStream(path2, FileMode.OpenOrCreate, FileAccess.Read));

        List<ServiceRequest> serviceRequests = new List<ServiceRequest>();

        while (textIn.Peek() != -1)
        {
            string row = textIn.ReadLine();
            string[] columns = row.Split('|');
            ServiceRequest serviceRequest = new ServiceRequest();
            serviceRequest.Name = columns[0];
            serviceRequest.ID = columns[1];
            serviceRequest.Desc = columns[2];
            serviceRequests.Add(serviceRequest);
        }

        textIn.Close();

        return serviceRequests;
    }

/ 阅读作业代码

public static List<Assignment> GetAssignment()
    {
        if (!Directory.Exists(dir))
            Directory.CreateDirectory(dir);

        StreamReader textIn =
            new StreamReader(
                new FileStream(path3, FileMode.OpenOrCreate, FileAccess.Read));

        List<Assignment> assignments = new List<Assignment>();

        while (textIn.Peek() != -1)
        {
            string row = textIn.ReadLine();
            string[] columns = row.Split('|');
            Assignment assignment = new Assignment();
            //Employee employee = new Employee();
            //assignment.Employee = columns[0];
            assignment.Employee.Name = columns[0];
            assignment.Employee.ID = columns[1];
            //assignment.Request = columns[1];
            assignment.Request.Name = columns[2];
            assignment.Request.ID = columns[3];
            assignment.Request.Desc = columns[4];
            assignments.Add(assignment);
        }

        textIn.Close();

        return assignments;
    }
}

// 加载表单时从文本文件中读取的代码

 private void ManagerStart_Load(object sender, EventArgs e)
    {
        myAssignments.Employees = FileIO.GetEmployees();
        myRequest.Requests = FileIO.GetRequest();
        myAssignments.Assignments = FileIO.GetAssignment();
        lstEmployee.Items.Clear();
        lstServiceRequest.Items.Clear();
        foreach (Employee employee in myAssignments.Employees)
        {
            lstEmployee.Items.Add(employee.ToString());
        }

        foreach (ServiceRequest serviceRequest in myRequest.Requests)
        {
            lstServiceRequest.Items.Add(serviceRequest.ToString());
        }

        foreach (Assignment assignment in myAssignments.Assignments)
        {
            lstAssignments.Items.Add(assignment.ToString());
        }
    }         

您必须创建属于 AssignmentEmployeeRequest 的实例 - 在 Assignment 构造函数中或外部。

public class Assignment
{
  public Employee Employee { get; set; }
  public Request Request { get; set; }
  public Assignment()
  {
    Employee = new Employee();
    Request = new Request();
  }
}

Assignment assignment = new Assignment() {
  Employee = new Employee(),
  Request = new Request()
};