之間不明確的引用後,我下面using
語句添加到我的代碼,我得到很多不明確的引用錯誤的:我介紹iTextSharp.text.Rectangle和System.Drawing.Rectangle
using iTextSharp.text;
using iTextSharp.text.pdf;
這是一個屏幕錯誤的鏡頭:
有誰知道是什麼引起這些錯誤?我如何介紹iTextSharp並避免這些錯誤?
之間不明確的引用後,我下面using
語句添加到我的代碼,我得到很多不明確的引用錯誤的:我介紹iTextSharp.text.Rectangle和System.Drawing.Rectangle
using iTextSharp.text;
using iTextSharp.text.pdf;
這是一個屏幕錯誤的鏡頭:
有誰知道是什麼引起這些錯誤?我如何介紹iTextSharp並避免這些錯誤?
您正在經歷非常正常的事情,沒有開發人員會將其描述爲「製造錯誤」。當開發人員編寫C#代碼時,他會在特定的名稱空間中創建類。例如:在iText中,我們在命名空間iTextSharp.text
中創建了諸如Font
的類。
顯然,類名稱Font
不是很原創,還有其他庫在其他名稱空間中使用相同名稱。在C#編程語言中甚至有一個名爲Font
的類,更具體地說在命名空間System.Drawing
中。
這很完美。編譯器可以很容易地看到iTextSharp.text.Font
和System.Drawing.Font
之間的區別,因爲它們具有不同的標準名稱(即:類的全名,包括名稱空間)。
在你的代碼中,你會混淆編譯器。您添加一條using
語句,該語句允許編譯器使用iTextSharp.text.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));
您還可以使用名稱空間別名(如*)使用sys = System.Drawing; *來簡化調用(將* pnlReport.DrawToBitMap(bm,new sys.Rectangle(0,0,width,height)); * then) – BudBrot
,我將你的評論添加到我的答案中。 –
沒有你添加從'NuGet'參考或手動添加呢? –
它似乎是兩個版本的相同參考之間的衝突。 –
我用nuget添加它 – Cleaven