Создание и сохранение значений объектов класса из текстового файла

Я пытаюсь найти способ создания экземпляров класса из файла, а также использовать этот файл как способ дать свойствам класса их значения. Я могу вручную вставить всю информацию, но лучше будет сделать это через файл, чтобы я мог изменить файл, который изменит программу для меня.

Вот код до сих пор... Когда я запускаю его, он говорит

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;
Другие вопросы по тегам