Exemplo n.º 1
0
        private static PortableFileObject AddFileObject
        (
            string filePath,
            PortableDirectorySource directorySource,
            ReaderWriterLockSlim objectsLock,
            Func <PortableDirectorySource, string, PortableFileObject> createObject
        )
        {
            _objectLoadingTask.ThrowIfUnitialised(nameof(_fileObjectDescriber),
                                                  nameof(AddFileObject),
                                                  nameof(RegisterPlatformSpecific));

            string   fileName = Path.GetFileName(filePath);
            DateTime fileTime = _fileObjectDescriber.GetFileCreationTime(filePath);

            PortableFileObject fileObject = createObject(directorySource,
                                                         fileName);

            directorySource.AddObject(fileObject);

            objectsLock?.EnterWriteLock();

            try
            {
                _cachedObjects.Add(fileObject);
            }
            finally
            {
                objectsLock?.ExitWriteLock();
            }

            return(fileObject);
        }
Exemplo n.º 2
0
        public PortableFileObject
        (
            PortableDirectorySource directorySource,
            string fileName,
            PortableFileDescriber fileDescriber
        )
            : base
            (
                directorySource
            )
        {
            DirectorySource = directorySource;

            FileExtension = Path.GetExtension(fileName).TrimStart('.');
            FileName      = Path.GetFileNameWithoutExtension(fileName);
            FilePath      = Path.Combine(directorySource.DirectoryPath,
                                         fileName);

            FileTime = fileDescriber.GetFileCreationTime(FilePath);
        }