我在 iTextSharp.text.Rectangle 和 System.Drawing.Rectangle 之间引入了一个模糊的引用
I introduced an ambiguous reference between iTextSharp.text.Rectangle and System.Drawing.Rectangle
在我的代码中添加以下 using
语句后,我收到大量不明确的引用错误:
using iTextSharp.text;
using iTextSharp.text.pdf;
这是错误的屏幕截图:
有人知道是什么导致了这些错误吗?如何引入 iTextSharp 并避免这些错误?
您遇到的情况非常正常,开发人员不会将其描述为 "creating errors." 当开发人员编写 C# 代码时,他会在特定命名空间中创建 classes。例如:在 iText,我们在命名空间 iTextSharp.text
.
中创建了 class 等 Font
显然,class 名称 Font
并不是很原始,在不同的命名空间 中还有其他使用相同名称 的库。在 C# 编程语言中甚至有一个名为 Font
的 class,更具体地说是在命名空间 System.Drawing
.
中
完全可以。编译器可以很容易地看出 iTextSharp.text.Font
和 System.Drawing.Font
之间的区别,因为它们具有不同的 完全限定名称 (即: class,包括命名空间)。
在您的代码中,您混淆了编译器。您添加一个 using
语句,允许编译器使用 iTextSharp.text.Font
class。但是,当您在代码中使用 Font
class 时,您没有指定要使用哪个 Font
class。你的编译器问你:你是想使用 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));
在我的代码中添加以下 using
语句后,我收到大量不明确的引用错误:
using iTextSharp.text;
using iTextSharp.text.pdf;
这是错误的屏幕截图:
有人知道是什么导致了这些错误吗?如何引入 iTextSharp 并避免这些错误?
您遇到的情况非常正常,开发人员不会将其描述为 "creating errors." 当开发人员编写 C# 代码时,他会在特定命名空间中创建 classes。例如:在 iText,我们在命名空间 iTextSharp.text
.
Font
显然,class 名称 Font
并不是很原始,在不同的命名空间 中还有其他使用相同名称 的库。在 C# 编程语言中甚至有一个名为 Font
的 class,更具体地说是在命名空间 System.Drawing
.
完全可以。编译器可以很容易地看出 iTextSharp.text.Font
和 System.Drawing.Font
之间的区别,因为它们具有不同的 完全限定名称 (即: class,包括命名空间)。
在您的代码中,您混淆了编译器。您添加一个 using
语句,允许编译器使用 iTextSharp.text.Font
class。但是,当您在代码中使用 Font
class 时,您没有指定要使用哪个 Font
class。你的编译器问你:你是想使用 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));