【问题标题】:How to create a wrapper class for particular method in C#如何在 C# 中为特定方法创建包装类
【发布时间】:2013-02-05 15:18:29
【问题描述】:

我需要为包含以下代码的类创建一个包装器。

PDDocument pdfDoc = PDDocument.load("C:\\Users\\Pictures\\Fillable.pdf");
PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField("last");
field.setValue("c#");
pdfDoc.save("C:\\Users\\Pictures\\Fillable.pdf");
pdfDoc.close(); 

我已经创建了两个包装类,但我对接下来的步骤有点困惑。

public class c_PDFdocu
{
    private PDDocument PD;

    public c_PDFdocu(string PDFPath)
    {
        PD = PDDocument.load(PDFPath);

    }
    public c_documentcatalog getDocumentCatalog()
    {

        return new c_documentcatalog(PD);
    }
}

public class c_documentcatalog
{
    private PDDocumentCatalog PDFDocCat;
    public c_documentcatalog(PDDocument PDFDoc)
    {
        PDFDocCat = PDFDoc.getDocumentCatalog();
    }

    public c_PDAcroForm getAcroForm()
    {
        return new c_PDAcroForm(PDFDocCat);
    }
}  


public class c_PDAcroForm
{
    private PDAcroForm acroForm;
    public c_PDAcroForm(PDDocumentCatalog docCatalog)
    {
        acroForm = docCatalog.getAcroForm();
    }
}

如何为剩余的语句创建一个包装类?

我需要将值传递给getField。它的用户视角类似于 setvalue。它属于相同的变量名称field

谢谢

【问题讨论】:

  • 剩余状态:PDField field = acroForm.getField("last"); field.setValue("c#");
  • 能否正确格式化您的代码?

标签: c# wrapper


【解决方案1】:

您要做的实际上是创建一个“外观”。外观(或包装器)本质上是一些代码,它们采用困难、挑剔的代码并使其更易于使用。

在您的情况下,创建一个类更有意义,其中构造函数获取您需要的信息(例如 路径)然后创建在类本身内部完成所有困难的工作.例如:

class PDFdoc
{
   String path;
   PDDocument pdfDoc;
   PDDocumentCatalog docCatalog; 
   PDAcroForm acroForm; 
   PDField field;

   public PDFdoc(String path)
   {
      this.path = path;
      this.pdfDoc = PDDocument.load(path);
      this.docCatalog = pdfDoc.getDocumentCatalog();
      this.acroForm = docCatalog.getAcroForm();
      this.field = acroForm.getField("last");

      this.field.setValue("c#");
   }

   public Save()
   {
      this.pdfDoc.save(path);
   }

   public Close()
   {
      this.pdfDoc.close();
   }
}

现在,当您要保存时,只需致电 PDFdoc.SavePDFDoc.close,它会为您处理所有工作。关键在于,Facade 通过将一个类封装(“包装”)在另一个具有更易于使用的接口的类中来隐藏有关类如何工作的所有困难细节

【讨论】:

  • 实际目的是将其创建为包装类,需要将其转换为com dll
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2014-08-26
  • 1970-01-01
  • 2022-12-07
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多