2

Box、Inc c#sdkを使用して一度に複数のフォルダーを作成すると、JavaScriptエラーが発生します。子ディレクトリのパスには、パスと文字列のリストで構成されるクラスを使用しています。ただし、CreateBoxFoldersメソッドを呼び出すと、パラメーターカウントの不一致例外がランダムにスローされます。私はこれまでのところ理由を特定することができませんでした。

    private void CreateBoxFolders(string dir, long boxfolderid)
    {
        string[] dirnames = dir.Path.Split('\\');

        CreateBoxFolder(dirnames[dirnames.Count() - 1], boxfolderid);

        long id = GetFolderId(dirnames[dirnames.Count() - 1], boxfolderid);

        // This is a class with a list that stores the folder structure and path 
        dir.ChildDirectories.ForEach(x =>
            CreateBoxFolders(x, id));
    }

    private void CreateBoxFolder(string name, long parent)
    {
        _BoxManager.CreateFolder(name, parent, false);
    }


    private long GetFolderId(string name, long parent)
    {
        var folders = _BoxManager.GetFolderStructure(parent,
                  BoxSync.Core.Primitives.RetrieveFolderStructureOptions.OneLevel);
        long number = folders.Folder.Folders.Where(x => x.Name == name.Trim()).First().ID;
        return number;
    }
4

1 に答える 1

0

配列の1つがnullまたは空のいずれかであると思われます。

long id = GetFolderId(dirnames[dirnames.Count() - 1], boxfolderid);

この行は、ある時点で、id=0のルートフォルダで機能している可能性があります。フォルダ0は、アカウントのルートにある仮想フォルダであり、ディレクトリ構造はありません。したがって、それはルートです。私の疑惑(C#プログラマーでなくても)は、これが

long id = ...(emptyarray[emptyarray.Count() -1], ... 

空の配列の数はnullまたはゼロのいずれかである可能性があります。ヌルは悪いでしょう...

于 2012-08-30T16:36:37.020 に答える