[英]c# MegaApiClient dynamic variable
我正在使用gpailler的MegaApiClient,并尝试在mega.nz中访问某些文件。 简单的例子:
INode myFolder = client.GetNodes(root).Single(n => n.Name == "apps");
INode myFolder1 = client.GetNodes(myFolder).Single(n => n.Name == "someapp");
INode myFolder2 = client.GetNodes(myFolder1).Single(n => n.Name == "somefolder");
INode myFile = client.GetNodes(myFolder2).Single(n => n.Name == "somefile.file");
这有效。(MegaApiClient以这种方式工作)
MegaApiClient client = new MegaApiClient();
client.Login(email,pass);
var nodes = client.GetNodes();
string Path = root\apps\someapp\somefolder\somefile.file; /*Path from user. This can be much longer*/
String[] directories = Path.Split(System.IO.Path.DirectorySeparatorChar);
foreach (string folder in directories)
{
if (folder == "root")
{
//1. Error:A local or parameter named 'test' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter
INode test= nodes.Single(n => n.Type == NodeType.Root);
}
//2. Error:Use of unassigned local variable test
INode test = client.GetNodes(test).Single(n => n.Name == folder);
}
Client.DownloadFile(myFile, copy);
client.Logout();`
Errors:
我已经尝试过了,但是没有用。 除了不记得以外,我还尝试了许多其他方法,我想我需要使用动态变量,但我不知道它是如何完成的。 请帮我。 对不起,我的英语不好。
更新1不需要foreach
和其他代码,只需要一个代码及其工作。 因为GetNodes()方法返回所有节点。 解决方案是:
//Its simple like this yes. Thanks gpailler for the answer
var file = client.GetNodes().Single(n => n.Type == NodeType.File && n.Name == FileName);
对于第一个错误,您定义了两次test
。 在每个内部和外部作用域中一次。
对于第二个错误,您尝试在.GetNodes(test)
方法中使用变量test
。 此时test
尚未初始化。
要解决这些问题,您将必须在外部范围内声明test
。
INode test;
foreach (string folder in directories)
{
if (folder == "root")
{
test = nodes.Single(n => n.Type == NodeType.Root);
}
else
{
test = client.GetNodes().Single(n => n.Name == folder);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.