C# 从文本文件创建和存储类对象的值

C# 从文本文件创建和存储类对象的值,c#,text-files,instances,C#,Text Files,Instances,我试图找到一种从文件中创建类实例的方法,并将该文件用作一种为类属性赋予值的方法。我可以手动输入所有信息,但最好是通过一个文件,这样我就可以更改文件,这将为我更改程序 这是到目前为止的代码。。。当我运行它时,它会说 class Program { class dish { public class starters { public string starter; public string alteration; } static void Main(string[

我试图找到一种从文件中创建类实例的方法,并将该文件用作一种为类属性赋予值的方法。我可以手动输入所有信息,但最好是通过一个文件,这样我就可以更改文件,这将为我更改程序

这是到目前为止的代码。。。当我运行它时,它会说

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();

    }
}
类程序
{
班菜
{
公共类启动器{公共字符串启动器;公共字符串转换;}
静态void Main(字符串[]参数)
{
List starter=新列表();
使用(StreamReader reader=File.OpenText(@“D:\Visual Studio\Projects\Bella Italia\Food\Starters.txt”))
{
IDictionary值=新字典();
而(!reader.EndOfStream)
{
value[reader.ReadLine()]=新的dish.starters();
值[reader.ReadLine()].starter=reader.ReadLine();
}
foreach(var x在value.Values中)
{
控制台。写入线(x.启动器);
}
}
Console.ReadLine();
}
}
}

当我试着运行它时,它说

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:“字典中不存在给定的键。”

您在这里连续阅读了两行。第二行可能在字典中没有关联的条目(您也不希望重复该条目):

将密钥存储在变量中,并重复使用:

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;

@TimSchmelter是的,这样的措辞会更好。更新。