【问题标题】:How do I specify a type argument explicitly when reading an XML file in UWP在 UWP 中读取 XML 文件时如何显式指定类型参数
【发布时间】:2016-01-08 12:10:12
【问题描述】:

我正在开发一个 UWP 应用程序,我需要在其中读取 XML 文件并将其写入设备。我花了一段时间搜索找到一个涵盖基础知识的教程,足以让我“有点”理解它。本教程Serialize/Deserialize an Object to an XML File (Windows Universal apps 8.1) 有一个简洁的示例,根据 cmets 应该可以工作。但是,当我按 F5 时出现此错误 无法从用法中推断出方法的类型参数。尝试明确指定类型参数。

这条线上的误差面

Robot robot2 = await XmlIO.XmlRW.ReadObjectFromXmlFileAsync("robbie.xml");

它指向的方法是this

    public static async Task<T> ReadObjectFromXmlFileAsync<T>(string filename)
    {
        // this reads XML content from a file ("filename") 
        // and returns an object  from the XML
        T objectFromXml = default(T);
        var serializer = new XmlSerializer(typeof(T));
        StorageFolder folder = ApplicationData.Current.LocalFolder;
        StorageFile file = await folder.GetFileAsync(filename);
        Stream stream = await file.OpenStreamForReadAsync();
        objectFromXml = (T)serializer.Deserialize(stream);
        stream.Dispose();
        return objectFromXml;
    }

我认为也许我需要将 Task 更改为 Task,但我也无法做到这一点。那么我需要做什么来明确指定类型参数呢?

【问题讨论】:

  • ReadObjectFromXmlFileAsync("robbie.xml")
  • 您的 XML 文件有多大?不确定从本地文件系统(或小型 xml)获取文件时为什么需要异步读取。你为什么选择这种方法?解析xml的方式有很多种。
  • @jdweng XML 文件正在从 300 行/10 列宽的 SQL Server 表中导出。我不确定是否保证异步读取,但这是我能找到的唯一教程,它引导我了解基础知识或在 UWP 应用程序中读写 XML
  • @lonewolf 确实解决了我的问题。如果您发布该答案,我将接受该答案。

标签: c# xml uwp windows-10-universal


【解决方案1】:

编译器无法确定 T 将是什么类型。您需要明确指定它:

Robot robot2 = await XmlIO.XmlRW.ReadObjectFromXmlFileAsync<Robot>("robbie.xml");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2023-04-04
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多