public static IFileSystemItem CreateItem(FileSystemItemKind kind, string name)
        {
            if (!validKinds.Contains(kind))
            {
                throw new ArgumentOutOfRangeException(nameof(kind), kind, "File system item kind is invalid.");
            }

            return(CreateItemInternal(kind, name));
        }
Ejemplo n.º 2
0
 protected XPathItem(
     Initializer initializer,
     FileSystem fs,
     FileSystemItemKind kind,
     NormalizedPath fullPath)
     : base(initializer)
 {
     FileSystem = fs;
     Kind       = kind;
     FullPath   = fullPath;
     initializer.ChildServices.Add(this);
 }
Ejemplo n.º 3
0
        public static WorkspaceItemKindEnum ToWorkspaceItemKind(this FileSystemItemKind fileSystemItemKind)
        {
            switch (fileSystemItemKind)
            {
            case FileSystemItemKind.RootFolder: return(WorkspaceItemKindEnum.RootFolder);

            case FileSystemItemKind.Folder: return(WorkspaceItemKindEnum.Folder);

            case FileSystemItemKind.File: return(WorkspaceItemKindEnum.File);

            case FileSystemItemKind.InputStream: return(WorkspaceItemKindEnum.InputStream);

            default: throw new InvalidOperationException($"Unknown FileSystemItemKind value {fileSystemItemKind}");
            }
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="kind">Item Kind</param>
        /// <param name="name">Item Name</param>
        /// <exception cref="ArgumentOutOfRangeException">Throws if the kind is incorrect</exception>
        /// <exception cref="ArgumentNullException">Throws if the name is null</exception>
        /// <exception cref="ArgumentException">Throws if the name is empty</exception>
        internal FileSystemItem(
            FileSystemItemKind kind,
            string name,
            IReadOnlyCollection <FileSystemItemKind> validParentKinds,
            IReadOnlyCollection <FileSystemItemKind> validChildKinds,
            string validParentKindsMessage,
            string validChildKindsMessage
            )
        {
            this.Kind = kind;
            this.Name = name;

            this.validParentKinds = validParentKinds;
            this.validChildKinds  = validChildKinds;

            this.validParentKindsMessage = validParentKindsMessage;
            this.validChildKindsMessage  = validChildKindsMessage;

            this.childItems = new FileSystemItemChildItemSet(this);
        }
        private static IFileSystemItem CreateItemInternal(FileSystemItemKind kind, string name)
        {
            if (name is null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(Invariant($"{nameof(name)} is empty."), nameof(name));
            }

            itemNameValidators[kind](name);

            return(new FileSystemItem(
                       kind,
                       name,
                       validParentKinds[kind],
                       validChildKinds[kind],
                       validParentKindsMessage[kind],
                       validChildKindsMessage[kind]
                       ));
        }