/// <summary> /// 为指定的小说下载插件注册书籍输出器。 /// </summary> /// <param name="plugin">小说下载插件。</param> /// <param name="bookWriter">书籍输出器。</param> /// <exception cref="ArgumentNullException"><paramref name="plugin"/> 的值为 <see langword="null"/> 。</exception> /// <exception cref="ArgumentNullException"><paramref name="bookWriter"/> 的值为 <see langword="null"/> 。</exception> /// <exception cref="InvalidOperationException">已为插件注册了书籍输出器。</exception> /// <exception cref="InvalidOperationException">插件未加载。</exception> public void RegisterBookWriter(INovelDownloadPlugin plugin, IBookWriter bookWriter) { if (plugin == null) { throw new ArgumentNullException(nameof(plugin)); } if (bookWriter == null) { throw new ArgumentNullException(nameof(bookWriter)); } if (this.Plugins.ContainsKey(plugin.Guid)) { if (this.BookWriters.ContainsKey(plugin.Guid)) { throw new InvalidOperationException("已为插件注册了书籍输出器。"); } else { this.BookWriters.Add(plugin.Guid, bookWriter); } } else { throw new InvalidOperationException("插件未加载。"); } }
/// <summary> /// 寻找合适的书籍输出器,并异步保存书籍到文件。 /// </summary> /// <param name="bookToken">书籍节点。</param> /// <param name="outputDir">输出目录。</param> /// <exception cref="ArgumentNullException"><paramref name="bookToken"/> 的值为 <see langword="null"/> 。</exception> /// <exception cref="NotSupportedException">未找到支持节点的小说下载插件。</exception> /// <exception cref="NotSupportedException">不支持的插件类型。</exception> public Task SaveToAsync(NDTBook bookToken, string outputDir) { if (bookToken == null) { throw new ArgumentNullException(nameof(bookToken)); } IBookWriter bookWriter = this.FindBookWriterForBookToken(bookToken); // 异步写入文件。 return(bookWriter.WriteAsync(bookToken, outputDir)); }
/// <summary> /// 寻找合适的书籍输出器,并保存书籍到文件。 /// </summary> /// <param name="bookToken">书籍节点。</param> /// <param name="outputDir">输出目录。</param> /// <exception cref="ArgumentNullException"><paramref name="bookToken"/> 的值为 <see langword="null"/> 。</exception> /// <exception cref="NotSupportedException">未找到支持节点的小说下载插件。</exception> /// <exception cref="NotSupportedException">不支持的插件类型。</exception> public void SaveTo(NDTBook bookToken, string outputDir) { if (bookToken == null) { throw new ArgumentNullException(nameof(bookToken)); } IBookWriter bookWriter = this.FindBookWriterForBookToken(bookToken); // 写入文件。 bookWriter.Write(bookToken, outputDir); }
public void RegisterBookWriter(IBookWriter bookWriter) { this.manager.RegisterBookWriter(this, bookWriter); }