/// <summary>Read from <paramref name="option"/></summary> /// <param name="option"></param> /// <returns>this</returns> public virtual Options Read(IOption option) { IOpenOption open = option.AsOption <IOpenOption>(); if (open != null) { CanCreateFile = open.CanCreateFile; CanOpen = open.CanOpen; CanRead = open.CanRead; CanWrite = open.CanWrite; } IDeleteOption delete = option.AsOption <IDeleteOption>(); if (delete != null) { CanDelete = delete.CanDelete; } IBrowseOption browse = option.AsOption <IBrowseOption>(); if (browse != null) { CanBrowse = browse.CanBrowse; CanGetEntry = browse.CanGetEntry; } ISubPathOption subpath = option.AsOption <ISubPathOption>(); if (subpath != null) { SubPath = subpath.SubPath; } return(this); }
/// <summary> /// Read options from <paramref name="option"/> and return flattened object. /// </summary> /// <param name="option"></param> /// <returns></returns> public static Options Read(IOption option) { Options result = new Options(); IOpenOption open = option.AsOption <IOpenOption>(); if (open != null) { result.CanCreateFile = open.CanCreateFile; result.CanOpen = open.CanOpen; result.CanRead = open.CanRead; result.CanWrite = open.CanWrite; } IBrowseOption browse = option.AsOption <IBrowseOption>(); if (browse != null) { result.CanBrowse = browse.CanBrowse; } IObserveOption observe = option.AsOption <IObserveOption>(); if (observe != null) { result.CanObserve = observe.CanObserve; } IToken token = option.AsOption <IToken>(); if (token != null) { var enumr = option.ListTokens(false); result.tokens = enumr is IToken[] arr ? arr : enumr.ToArray(); } return(result); }