Use NullFileProvider from FileSystem

This commit is contained in:
John Luo 2016-03-16 14:27:27 -07:00
parent 24279aa946
commit 32740d67a7
1 changed files with 0 additions and 82 deletions

View File

@ -1,82 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Primitives;
namespace Microsoft.AspNetCore.Hosting.Internal
{
internal class NullFileProvider : IFileProvider
{
public IDirectoryContents GetDirectoryContents(string subpath)
{
return new NullDirectoryContents();
}
public IFileInfo GetFileInfo(string subpath)
{
return new NullFileInfo(subpath);
}
public IChangeToken Watch(string filter)
{
return new NullChangeToken();
}
private class NullDirectoryContents : IDirectoryContents
{
public bool Exists => false;
public IEnumerator<IFileInfo> GetEnumerator()
{
yield break;
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
internal class NullFileInfo : IFileInfo
{
public NullFileInfo(string name)
{
Name = name;
}
public bool Exists => false;
public bool IsDirectory => false;
public DateTimeOffset LastModified => DateTimeOffset.MinValue;
public long Length => -1;
public string Name { get; }
public string PhysicalPath => null;
public Stream CreateReadStream()
{
throw new FileNotFoundException(string.Format($"{nameof(NullFileProvider)} does not support reading files.", Name));
}
}
private class NullChangeToken : IChangeToken
{
public bool HasChanged => false;
public bool ActiveChangeCallbacks => false;
public IDisposable RegisterChangeCallback(Action<object> callback, object state)
{
throw new NotSupportedException($"{nameof(NullFileProvider)} does not support registering change notifications.");
}
}
}
}