繁体   English   中英

c#MegaApiClient动态变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM