【问题标题】:File does not contain a definition for ' regData'文件不包含“regData”的定义
【发布时间】:2017-02-22 10:58:59
【问题描述】:

我一直在尝试使用插入到我的 UWP 应用中的 Microsoft.OneDriveSDK 下载文本文件内容。但我收到此错误消息:文件不包含“regData”的定义,其中 regData.txt 是包含我需要的详细信息的文件。

   Debug.WriteLine($"Content for file {Microsoft.OneDrive.Sdk.File.regData}:")

还从微软网站上找到了一个例子,写法如下:并且仍然无法弄清楚这种情况下的“名称”代表什么。

   Debug.WriteLine($"Content for file {file.Name}:"); 

【问题讨论】:

  • 在第二种情况下,“file”(小写 f)是一个引用文件的变量,它具有“Name”属性。在第一种情况下,“File”(大写 F)是一个类,没有静态属性“regData”。
  • 非常正确,因为我首先将变量文件定义如下: var file = await builder.Content.Request().GetAsync();我认为我真正还没有得到的是它的属性“名称”我已经尝试过但仍然得到一个错误。

标签: c# uwp


【解决方案1】:

文件不包含“regData”的定义

对于这个问题,正如@Crowcoder 所说,Microsoft.OneDrive.Sdk.File 类没有静态属性regData。您无法通过这种方式获取文件。

非常正确,因为我首先将变量文件定义如下: var file = await builder.Content.Request().GetAsync();我认为我真正没有得到的是它的属性“名称”我已经尝试过但仍然得到一个错误。

您似乎找到了示例 - 图 2 从 this article 下载文本文件的内容。我测试了样本,它在我这边可以很好地工作,并且可以获得名称属性。我用于测试的代码如下:

IItemRequestBuilder builder = app.OneDriveClient
     .Drive
     .Root
     .ItemWithPath("regfolder/regdata.txt");
 Item file = await builder
   .Request()
   .GetAsync();
 Stream contentStream = await builder.Content
   .Request()
   .GetAsync();
 Debug.WriteLine($"Content for file {file.Name}:");

 using (var reader = new StreamReader(contentStream))
 {
     Debug.WriteLine(reader.ReadToEnd());
 }

结果:

对于您获取文件名称属性的问题,您可能需要检查以下内容:

  • 包含txt文件的文件夹可能需要公开;
  • 你得到的txt文件应该是Item对象而不是File对象,单驱动sdk中的Fileclass不包含name属性,Item有;
  • 确保您实际上可以通过正确的路径获取文件。您可以使用上面的代码 sn-p 来检查Item file=... 是否有值。

因为您没有提供所有代码 sn-p,而只提供 var file = await builder.Content.Request().GetAsync();。我不确定你的builder 是什么,但似乎你得到的是Content 而不是尝试得到Item。内容通常是Stream 对象不应包含名称属性。如果这个构建器和我的一样,这里是IItemRequestBuilder对象,你应该通过代码await builder.Request().GetAsync();获取文件对象请尝试上面的代码sn-p,将文件路径替换为你的进行测试。

【讨论】:

  • Hallo Sunteen,我刚试了一下,将文件夹设置为 public 似乎是真的,而且我的构建器的定义是 = ItemwithPath。
猜你喜欢
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
相关资源
最近更新 更多