C# 在UWP中读取XML文件时,如何显式指定类型参数

C# 在UWP中读取XML文件时,如何显式指定类型参数,c#,xml,uwp,windows-10-universal,C#,Xml,Uwp,Windows 10 Universal,我正在开发一个UWP应用程序,在这个应用程序中,我需要向设备读写一个XML文件。我花了一段时间搜索,才找到一本涵盖基本知识的教程,足以让我“某种程度上”理解它。本教程有一个简洁的例子,根据注释应该可以使用。然而,当我F5时,我发现了这个错误,因为无法从用法中推断出方法的类型参数。尝试显式指定类型参数。 错误出现在这一行上 Robot robot2 = await XmlIO.XmlRW.ReadObjectFromXmlFileAsync("robbie.xml"); 它所指的方法是

我正在开发一个UWP应用程序,在这个应用程序中,我需要向设备读写一个XML文件。我花了一段时间搜索,才找到一本涵盖基本知识的教程,足以让我“某种程度上”理解它。本教程有一个简洁的例子,根据注释应该可以使用。然而,当我F5时,我发现了这个错误,因为无法从用法中推断出方法的类型参数。尝试显式指定类型参数。

错误出现在这一行上

Robot robot2 = await XmlIO.XmlRW.ReadObjectFromXmlFileAsync("robbie.xml");
它所指的方法是

    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;
    }
公共静态异步任务ReadObjectFromXmlFileAsync(字符串文件名)
{
//这将从文件(“文件名”)中读取XML内容
//并从XML返回一个对象
T objectFromXml=default(T);
var serializer=newxmlserializer(typeof(T));
StorageFolder folder=ApplicationData.Current.LocalFolder;
StorageFile file=wait folder.GetFileAsync(文件名);
Stream=wait file.OpenStreamForReadAsync();
objectFromXml=(T)序列化程序。反序列化(流);
stream.Dispose();
返回objectFromXml;
}

我想也许我需要将任务更改为任务,但我也无法实现这一点。那么,我需要做什么来显式指定类型参数呢?

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

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

ReadObjectFromXmlFileAsync(“robbie.xml”)您的xml文件有多大?不确定从本地文件系统(或小型xml)获取文件时为什么需要异步读取。你为什么选择这种方法?解析xml有许多不同的方法。@jdweng xml文件正在从300行/10列宽的SQL server表导出。我不确定这本书是否可以阅读,但这是我能找到的唯一一本指导我学习基本知识或在UWP中阅读和编写XML的教程app@lonewolf这确实解决了我的问题。如果你发布这个答案,我会接受这个答案。