Вот мой код для чтения из текстового файла. Он «работает» и читается из текстового файла, но есть небольшая ошибка. Он возвращает это: {Employee: Name: Name: red ID: 123 ID: Request: Name: Name: toilet ID: 444 Desc: water ID: Desc: }
Я знаю, почему он это делает, я просто не могу понять, как это исправить. columns[0]
Значение «Имя: red \ t ID: 123» и columnms[1]
Значение «Имя: туалет \ t ID: 444 \ t Desc: water».Анализ структурированного ввода текста и составление структурированного вывода вложенных классов
Я знаю, что это делает это, потому что я звоню assignment.Employee.Name
, но я не знаю, как еще назвать это, чтобы показать его в моей форме. Я думал, что это будет что-то вроде assignment.Employee
, но затем оно дает ошибку, что я не могу преобразовать строку в тип Employee.
Назначение - это список, который содержит 2 объекта из других списков (сотрудник и запрос на обслуживание).
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('|');
if (columns.Length >= 2)
{
Assignment assignment = new Assignment();
assignment.Employee.Name = columns[0];
assignment.Request.Name = columns[1];
assignments.Add(assignment);
}
}
textIn.Close();
return assignments;
}
EDIT: Я ожидаю, что это просто вернуть {Employee: Name: red ID: 123 Request: Name: toilet ID: 444 Desc: water}
_ «Я знаю, что это делается, потому что я вызываю назначение.Employee.Name» _ Я не понимаю проблему и ее причину. –
Думаю, нам также нужен взгляд на ваш класс Employee и в файл данных ;-). Но обычной общей идеей является определение методов ToString() для всех типов, снизу вверх, адекватное сочетание из нижнего уровня при преобразовании более высоких уровней в строки. Фактически, это то, что вы пытаетесь сделать (Assignment.ToString() использует Employee, но, вероятно, следует вызвать Employee.ToString()). –
Вы все еще не указали текстовый файл, но если вы скажете, что «column [0] значение« Name: red \ t ID: 123 »« Я предполагаю, что слово «Name» фактически появляется ** в текстовом файле * *. Это означает, что текстовый файл в основном представляет собой словарь с тегами («Имя», «Идентификатор» и значения («красный», «123»). Если это так по определению формата данных, вы должны сделать более продуманный синтаксический анализ и устранить «Name» из значения столбца. Если это не всегда так, и значение строк строки - это формат csv с вкладками в качестве разделительных символов, тогда у вас есть смешные данные, и вы ничего не можете сделать. –