• Lexical
Show / Hide Table of Contents
  • Lexical.FileSystem
    • Introduction
    • Abstractions
      • IFileSystem
        • IFileSystem
        • IFileSystemBrowse
        • IFileSystemCreateDirectory
        • IFileSystemDelete
        • IFileSystemFileAttribute
        • IFileSystemMount
        • IFileSystemMove
        • IFileSystemObserve
        • IFileSystemOpen
      • IEvent
      • IEntry
      • IOption
      • IToken
    • FileSystem
    • VirtualFileSystem
    • MemoryFileSystem
    • EmbeddedFileSystem
    • HttpFileSystem
    • Decoration
    • IFileProvider
    • Utility
      • DisposeList
      • FileScanner
      • VisitTree
      • File Operation
  • Lexical.FileProvider
    • Introduction
    • Package
    • Package.Abstractions
    • Root
    • Zip
    • Dll
    • SharpCompress
    • SharpZipLib
    • FileScanner
    • Utils
  • Lexical.Localization
    • Introduction
    • Tutorial
    • Asset
      • IAsset
      • IStringAsset
    • Line
      • ILine
      • ILineFactory
      • ILineRoot
      • ILineFormat
      • ILineLogger
      • LineComparer
    • File
      • ILineReader
      • ILineWriter
      • Ini
      • Json
      • Xml
      • Resx
      • Resources
    • Miscellaneous
      • Plurality
      • ICulturePolicy
      • IStringFormat
      • Dependency Injection
    • Practices
      • Class Library
      • Class Library DI
      • Class Library DI opt.
  • Lexical.Utilities
    • Introduction
    • UnicodeString
    • FileScanner
    • Permutation
    • Tuples
    • StructList

IOption

IOption is root interface filesystem options. (Click here)

/// <summary>
/// Interface for filesystem options. 
/// 
/// See sub-interfaces:
/// <list type="bullet">
///     <item><see cref="IAdaptableOption"/></item>
///     <item><see cref="ISubPathOption"/></item>
///     <item><see cref="IPathInfo"/></item>
///     <item><see cref="IAutoMountOption"/></item>
///     <item><see cref="IToken"/></item>
///     <item><see cref="IOpenOption"/></item>
///     <item><see cref="IObserveOption"/></item>
///     <item><see cref="IMoveOption"/></item>
///     <item><see cref="IBrowseOption"/></item>
///     <item><see cref="ICreateDirectoryOption"/></item>
///     <item><see cref="IDeleteOption"/></item>
///     <item><see cref="IMountOption"/></item>
/// </list>
/// 
/// The options properties must be immutable in the implementing classes.
/// </summary>
public interface IOption
{
}

IOpenOption is capabilities of IFileSystemOpen interface. (Click here)

public interface IOpenOption : IOption
{
    /// <summary>Can open file</summary>
    bool CanOpen { get; }
    /// <summary>Can open file for reading(</summary>
    bool CanRead { get; }
    /// <summary>Can open file for writing.</summary>
    bool CanWrite { get; }
    /// <summary>Can open and create file.</summary>
    bool CanCreateFile { get; }
}

IObserveOption is capabilities of IFileSystemObserve interface. (Click here)

public interface IObserveOption : IOption
{
    /// <summary>Has Observe capability.</summary>
    bool CanObserve { get; }
}

IMoveOption is capabilities of IFileSystemMove interface. (Click here)

public interface IMoveOption : IOption
{
    /// <summary>Can Move files within same volume.</summary>
    bool CanMove { get; }
}

IBrowseOption is capabilities of IFileSystemBrowse interface. (Click here)

public interface IBrowseOption : IOption
{
    /// <summary>Has Browse capability.</summary>
    bool CanBrowse { get; }
    /// <summary>Has GetEntry capability.</summary>
    bool CanGetEntry { get; }
}

ICreateDirectoryOption is capabilities of IFileSystemCreateDirectory interface. (Click here)

public interface ICreateDirectoryOption : IOption
{
    /// <summary>Has CreateDirectory capability.</summary>
    bool CanCreateDirectory { get; }
}

IDeleteOption is capabilities of IFileSystemDelete interface. (Click here)

public interface IDeleteOption : IOption
{
    /// <summary>Has Delete capability.</summary>
    bool CanDelete { get; }
}

IMountOption is capabilities of IFileSystemMount interface. (Click here)

public interface IMountOption : IOption
{
    /// <summary>Can filesystem mount other filesystems.</summary>
    bool CanMount { get; }
    /// <summary>Is filesystem allowed to unmount a mount.</summary>
    bool CanUnmount { get; }
    /// <summary>Is filesystem allowed to list mountpoints.</summary>
    bool CanListMountPoints { get; }
}

IFileAttributeOption is capabilities of IFileSystemFileAttribute interface. (Click here)

public interface IFileAttributeOption : IOption
{
    /// <summary>Has SetFileAttribute capability.</summary>
    bool CanSetFileAttribute { get; }
}

ISubPathOption is interface for subpath option. (Click here)

public interface ISubPathOption : IOption
{
    /// <summary>Sub-path.</summary>
    String SubPath { get; }
}

IAutoMountOption is interface for automatic mounting of package files. (Click here)

public interface IAutoMountOption : IOption
{
    /// <summary>Package loaders that can mount package files, such as .zip.</summary>
    IPackageLoader[] AutoMounters { get; }
}

IPathInfo is interface for filesystem's path info options. (Click here)

public interface IPathInfo : IOption
{
    /// <summary>Case sensitivity</summary>
    FileSystemCaseSensitivity CaseSensitivity { get; }
    /// <summary>Filesystem allows empty string "" directory names. The value of this property excludes the default empty "" root path.</summary>
    bool EmptyDirectoryName { get; }
}

IAdaptableOption is interface for runtime option classes. (Click here)

/// <summary>
/// Interface for option classes that adapt to option types at runtime.
/// Also enumerates supported <see cref="IOption"/> option type interfaces.
/// </summary>
public interface IAdaptableOption : IOption, IEnumerable<KeyValuePair<Type, IOption>>
{
    /// <summary>
    /// Get option with type interface.
    /// </summary>
    /// <param name="optionInterfaceType">Subtype of <see cref="IOption"/></param>
    /// <returns>Option or null</returns>
    IOption GetOption(Type optionInterfaceType);
}


FileSystemOption singletons:

Flag Description
Option.Join() Takes first instance of each option.
Option.Union() Take union of options.
Option.Intersection() Take intersection of options.
Option.ReadOnly Read-only operations allowed, deny modification and write operations
Option.NoOptions No options
Option.Path(caseSensitivity, emptyDirectoryName) Path options
Option.Observe Observe is allowed.
Option.NoObserve Observe is not allowed
Option.Open(canOpen, canRead, canWrite, canCreateFile) Open options
Option.OpenReadWriteCreate Open, Read, Write, Create
Option.OpenReadWrite Open, Read, Write
Option.OpenRead Open, Read
Option.NoOpen No access
Option.Mount Mount is allowed.
Option.NoMount Mount is not allowed
Option.Move Move and rename is allowed.
Option.NoMove Move and rename not allowed.
Option.Delete Delete allowed.
Option.NoDelete Delete not allowed.
Option.CreateDirectory CreateDirectory allowed.
Option.NoCreateDirectory CreateDirectory not allowed.
Option.Browse Browse allowed.
Option.NoBrowse Browse not allowed.
Option.SubPath(subpath) Create option for sub-path. Used with decorator and VirtualFileSystem.
Option.NoSubPath No mount path.
Back to top Copyright © 2015-2020 Toni Kalajainen