// Возьмём Массив из стандартной библиотеки public Calculation() { Items = ArrayImpl.Constructor() as ArrayImpl; // Также можно написать items = new ArrayIml(); // но лучше вызвать предлагаемый библиотекой конструктор }
public ArrayImpl NamespaceUris() { var result = ArrayImpl.Constructor() as ArrayImpl; foreach (var ns in _nsmap.Values.Distinct()) { result.Add(ValueFactory.Create(ns)); } return(result); }
public ArrayImpl Prefixes(string namespaceUri) { var result = ArrayImpl.Constructor() as ArrayImpl; foreach (var prefix in _nsmap .Where((arg) => arg.Value.Equals(namespaceUri, StringComparison.Ordinal)) .Select((arg) => arg.Key)) { result.Add(ValueFactory.Create(prefix)); } return(result); }
public ArrayImpl FindFiles(string path, string mask = null, bool recursive = true) { var result = ArrayImpl.Constructor() as ArrayImpl; Regex maskChecker = null; if (!string.IsNullOrEmpty(mask)) { maskChecker = FtpCrutch.GetRegexForFileMask(mask); } if (!string.IsNullOrEmpty(path) && !path.EndsWith("/", StringComparison.Ordinal)) { path += "/"; } path = ApplyCurrentPath(path); IList <string> files, directories; try { ListFiles(path, out directories, out files); } catch (System.Net.ProtocolViolationException) { return(result); } catch (WebException ex) { var error = (FtpWebResponse)ex.Response; if (error.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable) { return(result); } throw ex; } catch { throw; } foreach (var dirName in directories) { var dirEntry = new FtpFile(this, path, dirName, isDir: true); if (maskChecker?.IsMatch(dirName) ?? true) { result.Add(dirEntry); } if (recursive) { var filesInDir = FindFiles(dirEntry.FullName, mask, recursive); foreach (var fileEntry in filesInDir) { result.Add(fileEntry); } } } foreach (var fileName in files) { if (maskChecker?.IsMatch(fileName) ?? true) { var fileEntry = new FtpFile(this, path, fileName); result.Add(fileEntry); } } return(result); }