我在思考如何正确包装我正在使用的 PDF 库时遇到了一个问题IronPDF
。
IronPDF
有一个PdfDocument
对象。
我的想法是创建一个IronPdfDocument
如下所示的对象:
public class IronPdfDocument : PdfDocument, IPdfDocument
{
public IronPdfDocument(string filePath) : base(filePath) { }
public IronPdfDocument(Stream stream) : base(stream) { }
public IronPdfDocument(byte[] data) : base(data) { }
public Stream GetSTream() => base.Stream;
}
IronPDF
还有一个被调用的渲染对象,HtmlToPdf
我的想法是创建一个IronPdfRenderer
看起来像这样的对象:
public class IronPdfRenderer : HtmlToPdf, IPdfRenderer
{
public IronPdfRenderer() : base() { }
public IPdfDocument RenderHtmlAsPdf(string html)
=> (IronPdfDocument)base.RenderHtmlAsPdf(html);
}
然后在代码中使用接口对象,如下所示:
public IPdfDocument Execute()
{
IPdfRenderer renderer = new IronPdfRenderer();
return renderer.RenderHtmlAsPdf(myHtmlString);
}
但是,IronPdfRenderer
在调用RenderHtmlAsPdf
尝试将IronPDF
's转换PdfDocument
为我的包装对象时,我的对象出现错误IronPdfDocument
。
我知道从表面上看 aPdfDocument
可能无法转换为 my IronPdfDocument
,但我想在我的代码中创建一个更通用的结构,这将有助于将来证明我的业务逻辑,因为不同的 Pdf 库可以来来去去。我想知道是否有人可以提供任何帮助/了解我在这里做错了什么?
这是任何有兴趣的人的错误:
Unable to cast object of type 'IronPdf.PdfDocument' to type 'MyNamespace.Merge.IronPdfDocument'.