|
1 | 1 | using System; |
2 | 2 | using System.IO; |
| 3 | +using System.Linq; |
3 | 4 | using System.Security.Cryptography; |
| 5 | +using ServiceStack.Text; |
4 | 6 |
|
5 | 7 | namespace ServiceStack.VirtualPath |
6 | 8 | { |
7 | 9 | public abstract class AbstractVirtualFileBase : IVirtualFile |
8 | 10 | { |
9 | | - public IVirtualPathProvider VirtualPathProvider { get; set; } |
10 | | - protected IVirtualDirectory ParentDirectory; |
| 11 | + public IVirtualPathProvider VirtualPathProvider { get; set; } |
| 12 | + |
| 13 | + public string Extension |
| 14 | + { |
| 15 | + get { return Name.SplitOnLast('.').LastOrDefault(); } |
| 16 | + } |
| 17 | + |
| 18 | + public IVirtualDirectory Directory { get; set; } |
11 | 19 |
|
12 | 20 | public abstract string Name { get; } |
13 | | - public abstract string DirectoryName { get; } |
14 | 21 | public virtual string VirtualPath { get { return GetVirtualPathToRoot(); } } |
15 | 22 | public virtual string RealPath { get { return GetRealPathToRoot(); } } |
16 | 23 | public virtual bool IsDirectory { get { return false; } } |
17 | 24 | public abstract DateTime LastModified { get; } |
18 | 25 |
|
19 | | - protected AbstractVirtualFileBase(IVirtualPathProvider owningProvider, IVirtualDirectory parentDirectory) |
| 26 | + protected AbstractVirtualFileBase( |
| 27 | + IVirtualPathProvider owningProvider, IVirtualDirectory directory) |
20 | 28 | { |
21 | 29 | if (owningProvider == null) |
22 | 30 | throw new ArgumentNullException("owningProvider"); |
23 | 31 |
|
24 | | - if (parentDirectory == null) |
25 | | - throw new ArgumentNullException("parentDirectory"); |
| 32 | + if (directory == null) |
| 33 | + throw new ArgumentNullException("directory"); |
26 | 34 |
|
27 | 35 | this.VirtualPathProvider = owningProvider; |
28 | | - this.ParentDirectory = parentDirectory; |
| 36 | + this.Directory = directory; |
29 | 37 | } |
30 | 38 |
|
31 | 39 | public virtual string GetFileHash() |
@@ -63,7 +71,7 @@ protected virtual string GetRealPathToRoot() |
63 | 71 |
|
64 | 72 | protected virtual string GetPathToRoot(string separator, Func<IVirtualDirectory, string> pathSel) |
65 | 73 | { |
66 | | - var parentPath = ParentDirectory != null ? pathSel(ParentDirectory) : string.Empty; |
| 74 | + var parentPath = Directory != null ? pathSel(Directory) : string.Empty; |
67 | 75 | if (parentPath == separator) |
68 | 76 | parentPath = string.Empty; |
69 | 77 |
|
|
0 commit comments