在我的代码中添加以下using
语句后,我收到了大量含糊不清的引用错误:
using iTextSharp.text;
using iTextSharp.text.pdf;
这是错误的屏幕截图:
有人知道造成这些错误的原因是什么吗?我如何介绍iTextSharp并避免这些错误?
答案 0 :(得分:3)
您正在经历一些非常正常的事情,并且没有开发人员会将其描述为"创建错误。"当开发人员编写C#代码时,他会在某个命名空间中创建类。例如:在iText,我们在命名空间Font
中创建了iTextSharp.text
等类。
显然,类名Font
不是非常原始的,还有其他库在不同的命名空间中使用相同的名称 。甚至在C#编程语言中有一个名为Font
的类,更具体地说,在名称空间System.Drawing
中。
这完全没问题。编译器可以轻松查看iTextSharp.text.Font
和System.Drawing.Font
之间的区别,因为它们具有不同的完全限定名称(即:类的全名,包括命名空间)。
在您的代码中,您会混淆编译器。您添加了using
语句,允许编译器使用iTextSharp.text.Font
类。但是,当您在代码中使用Font
类时,您不需要指定要使用的Font
类。您的编译器问您:您的意思是使用iTextSharp.text.Font
还是System.Drawing.Font
?还有:您的意思是使用iTextSharp.text.Rectangle
还是System.Drawing.Rectangle
?
您可以使用完全限定名称来解决此问题,以便不再混淆编译器。
例如,如果没有命名空间,您的编译器就不知道您的意思是:
pnlReport.DrawToBitMap(bm, new System.Drawing.Rectangle(0, 0, width, height));
或:
pnlReport.DrawToBitMap(bm, new iTextSharp.text.Rectangle(0, 0, width, height));
所以你必须使用:
pnlReport.DrawToBitMap(bm, new System.Drawing.Rectangle(0, 0, width, height));
而不是:
pnlReport.DrawToBitMap(bm, Rectangle(0, 0, width, height));
您还可以使用名称空间别名,如:
using sys = System.Drawing;
简化这样的调用:
pnlReport.DrawToBitMap(bm, new sys.Rectangle(0, 0, width, height));