Создание и сохранение значений объектов класса из текстового файла
Я пытаюсь найти способ создания экземпляров класса из файла, а также использовать этот файл как способ дать свойствам класса их значения. Я могу вручную вставить всю информацию, но лучше будет сделать это через файл, чтобы я мог изменить файл, который изменит программу для меня.
Вот код до сих пор... Когда я запускаю его, он говорит
class Program
{
class dish
{
public class starters { public string starter; public string alteration; }
static void Main(string[] args)
{
List<dish.starters> starter = new List<dish.starters>();
using (StreamReader reader = File.OpenText(@"D:\Visual Studio\Projects\Bella Italia\Food\Starters.txt"))
{
IDictionary<string, dish.starters> value = new Dictionary<string, dish.starters>();
while (!reader.EndOfStream)
{
value[reader.ReadLine()] = new dish.starters();
value[reader.ReadLine()].starter = reader.ReadLine();
}
foreach(var x in value.Values)
{
Console.WriteLine(x.starter);
}
}
Console.ReadLine();
}
}
}
Когда я пытаюсь запустить его, он говорит
Необработанное исключение System.Collections.Generic.KeyNotFoundException: "Указанный ключ отсутствует в словаре".
1 ответ
Решение
Вы читаете две последовательные строки здесь. Вторая строка, вероятно, не имеет связанной записи в словаре (и вам не нужно это дублирование):
value[reader.ReadLine() /*one*/] = new dish.starters();
value[reader.ReadLine() /*two*/].starter = reader.ReadLine();
Сохраните ключ в переменной и повторно используйте это:
string key = reader.ReadLine();
value[key] = new dish.starters();
value[key].starter = reader.ReadLine();
Или создайте объект и назначьте позже:
string key = reader.ReadLine();
var starters = new dish.starters();
starters.starter = reader.ReadLine()
value[key] = starters;