对于我的代码,有3个列表集合。保存员工(具有名称/id参数)和服务请求(包含参数名称/id/description)的人。然后,第三个任务是从其他2个列表中保存员工和服务请求的任务(将雇员分配给服务请求)。
我已经读取了为员工/服务请求工作的内容,但是对于任务,我得到了一个错误:“对象引用没有设置为对象的实例”。当我运行我的代码时,我不知道如何修复它。
assignment.Employee.Name = columns[0];的错误点--我在想,可能类似于//assignment.Employee = columns[0]; --将整个employee对象分配给列。但是,它给出了不能将字符串转换为MaintenanceManagementSystem.Employee的错误。
/Code用于阅读员工。
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());
}
} 发布于 2015-11-19 22:48:29
您必须创建属于Employee和Request的Assignment实例,无论是在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()
};https://stackoverflow.com/questions/33815677
复制相似问题