/// <summary> /// Gets the <see cref="ILocalizedTemplateContentReader"/> for the <see cref="TemplateDefinition"/>. /// </summary> /// <param name="templateDefinition">The <see cref="TemplateDefinition"/>.</param> /// <returns>The <see cref="ILocalizedTemplateContentReader"/> for the <see cref="TemplateDefinition"/>.</returns> protected virtual async Task <ILocalizedTemplateContentReader> CreateInternalAsync( TemplateDefinition templateDefinition) { var virtualPath = templateDefinition.GetVirtualFilePath(); if (virtualPath == null) { return(NullLocalizedTemplateContentReader.Instance); } var fileInfo = VirtualFileProvider.GetFileInfo(virtualPath); if (!fileInfo.Exists) { var directoryContents = VirtualFileProvider.GetDirectoryContents(virtualPath); if (!directoryContents.Exists) { throw new Exception("Could not find a file/folder at the location: " + virtualPath); } fileInfo = new VirtualDirectoryFileInfo(virtualPath, virtualPath, DateTimeOffset.UtcNow); } if (fileInfo.IsDirectory) { var folderReader = new VirtualFolderLocalizedTemplateContentReader(); await folderReader.ReadContentsAsync(VirtualFileProvider, virtualPath); return(folderReader); } else //File { var singleFileReader = new FileInfoLocalizedTemplateContentReader(); await singleFileReader.ReadContentsAsync(fileInfo); return(singleFileReader); } }