从文本文件中读取不起作用
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());
}
}
您必须创建属于 Assignment
的 Employee
和 Request
的实例 - 在 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()
};
对于我的代码,有 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());
}
}
您必须创建属于 Assignment
的 Employee
和 Request
的实例 - 在 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()
};