C# 如何将XML Dialog.FileName传递给StreamReader进行反序列化?

C# 如何将XML Dialog.FileName传递给StreamReader进行反序列化?,c#,xml,wpf,serialization,C#,Xml,Wpf,Serialization,因此,目前在我的WPF项目中,我让用户浏览XML文件,然后我想反序列化该XML文件并在DataGrid中显示数据 我确信我的反序列化功能可以工作。但是,我目前将其设置为仅反序列化一个XML文件,如下所示: public static void DeSerializationXML() { XmlRootAttribute xRoot = new XmlRootAttribute(); xRoot.ElementName = "lot_information

因此,目前在我的WPF项目中,我让用户浏览XML文件,然后我想反序列化该XML文件并在DataGrid中显示数据

我确信我的反序列化功能可以工作。但是,我目前将其设置为仅反序列化一个XML文件,如下所示:

public static void DeSerializationXML()
    {
        XmlRootAttribute xRoot = new XmlRootAttribute();
        xRoot.ElementName = "lot_information";
        xRoot.IsNullable = false;
        // Create an instance of analytes class.
        LotInformation[] lotinfo;
        // Create an instance of stream writer.
        TextReader txtReader = new StreamReader(@"C:\~\lot-123456.xml");
        // Create and instance of XmlSerializer class.
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(LotInformation[]), xRoot);
        // DeSerialize from the StreamReader
        lotinfo = (LotInformation[])xmlSerializer.Deserialize(txtReader);
        // Close the stream reader
        txtReader.Close();
        Console.ReadLine();   
    }
在另一个功能中,我有以下功能,允许用户浏览并上传文件:

private void ChangeLotFilePath()
    {
        OpenFileDialog Dialog = new OpenFileDialog();
        Dialog.Filter = "XML files (*.xml)|*.xml";
        Dialog.ShowDialog();

        if (!String.IsNullOrEmpty(Dialog.FileName))
        {
            LotFileCreationDirectory = Dialog.FileName.ToString();
        }

        DeSerializationXML();
    }

现在我想知道,如何将Dialog.FileName.ToString()传递给StreamReader,以便它能够识别用户选择的文件路径

为什么不将路径作为参数

public static void DeSerializationXML(string path)
{
     ...
     TextReader txtReader = new StreamReader(path);
}

private void ChangeLotFilePath()
{
    using (var dialog = new OpenFileDialog()) {
        dialog.Filter = "XML files (*.xml) | *.xml";

        if (dialog.ShowDialog() == DialogResult.OK) {
            DeserializationXML(dialog.FileName);
        }
    }
}

只是吹毛求疵:Dialog.FileName已经是一个字符串了,不需要在那里调用ToString()方法……哦,我明白了。谢谢你的提示!:我明白了,这是有道理的。非常感谢。NP我用更好的语法编辑了我的答案,现在可以为您处理了。如果这对你有效,请接受作为答案。我会的,我接受答案的时间有2分钟的限制。为清晰起见,感谢您的编辑。顺便问一下,对于我可以作为参数从on函数传递到另一个函数有什么限制吗?仅供将来参考。