C# 如何将XML Dialog.FileName传递给StreamReader进行反序列化?
因此,目前在我的WPF项目中,我让用户浏览XML文件,然后我想反序列化该XML文件并在DataGrid中显示数据 我确信我的反序列化功能可以工作。但是,我目前将其设置为仅反序列化一个XML文件,如下所示: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
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函数传递到另一个函数有什么限制吗?仅供将来参考。