首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件中读取不起作用

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

Stack Overflow用户
提问于 2015-11-19 22:39:41
回答 1查看 60关注 0票数 0

对于我的代码,有3个列表集合。保存员工(具有名称/id参数)和服务请求(包含参数名称/id/description)的人。然后,第三个任务是从其他2个列表中保存员工和服务请求的任务(将雇员分配给服务请求)。

我已经读取了为员工/服务请求工作的内容,但是对于任务,我得到了一个错误:“对象引用没有设置为对象的实例”。当我运行我的代码时,我不知道如何修复它。

assignment.Employee.Name = columns[0];的错误点--我在想,可能类似于//assignment.Employee = columns[0]; --将整个employee对象分配给列。但是,它给出了不能将字符串转换为MaintenanceManagementSystem.Employee的错误。

/Code用于阅读员工。

代码语言:javascript
复制
    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;
    }

/阅读请求代码

代码语言:javascript
复制
    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;
    }

/阅读作业守则

代码语言:javascript
复制
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;
    }
}

//代码,它在表单加载时从文本文件中读取

代码语言:javascript
复制
 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());
        }
    }         
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-19 22:48:29

您必须创建属于EmployeeRequestAssignment实例,无论是在Assignment构造函数中还是在外部。

代码语言:javascript
复制
public class Assignment
{
  public Employee Employee { get; set; }
  public Request Request { get; set; }
  public Assignment()
  {
    Employee = new Employee();
    Request = new Request();
  }
}

代码语言:javascript
复制
Assignment assignment = new Assignment() {
  Employee = new Employee(),
  Request = new Request()
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33815677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档