public WorkspacesContextConnector(IExtendedWorkspacesClient client, string account, string workspace,
     SandboxCollection sandboxes, string serviceName, string[] excludePrefixes)
     : base(serviceName, excludePrefixes)
 {
     this.account = account;
     this.workspace = workspace;
     this.sandboxes = sandboxes;
     this.client = client;
 }
        protected static async Task<IGalleryContext> ConnectAsync(IExtendedWorkspacesClient extendedWorkspacesClient,
            Uri appsEndpoint, string authenticationToken, string account, string workspace, SandboxCollection sandboxes, 
            string serviceName, string[] excludePrefixes, CancellationToken cancellationToken)
        {
            workspace = workspace ?? DefaultWorkspace;
            excludePrefixes = excludePrefixes ?? EmptyStringArray;

            var workspacesContextConnector = new WorkspacesContextConnector(extendedWorkspacesClient, account, workspace,
                sandboxes, serviceName, excludePrefixes);

            var apps = await workspacesContextConnector.GetAppsAsync(cancellationToken).ConfigureAwait(false);

            var appsConnector = new AppsConnector(appsEndpoint, authenticationToken);
            var appsClient = new AppsClient(appsConnector);

            var sandboxesClient = new SandboxesClient(appsConnector);
            var appsContextConnector = new AppsContextConnector(appsClient, sandboxesClient, apps, sandboxes,
                serviceName, excludePrefixes);

            return new GalleryContext(account, workspace, sandboxes, workspacesContextConnector, appsContextConnector);
        }