2013-09-25 48 views
1

我創建了類似的命名(但不相同)類型的參數,兩個過載方法,以及它們的聲明如下:如何解決方法參數中命名類型相同的錯誤?

public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, System.Drawing.Point p) 
public static RectangleNineSides GetRectangleSide(Microsoft.Xna.Framework.Rectangle rect, Microsoft.Xna.Framework.Point p) 

正如你所看到的,參數是兩種方法不同,但調用時他們中的一個,像這樣:

h.RectangleNineSides side = h.GetRectangleSide(new Microsoft.Xna.Framework.Rectangle(), new Microsoft.Xna.Framework.Point()); 

在我的XNA項目中,我得到一個錯誤說:

類型「System.Drawing.Point」在一個組件,該組件定義未引用。您必須添加一個引用到組裝「System.Drawing中,版本= 4.0.0.0,誇誇其談」

但是爲什麼對其它方法的編譯程序護理,如果它甚至沒有任何地方在當前項目中稱爲?出現在任何的WinForms項目但XNA的類型

類似的錯誤。我甚至明確寫了RectanglePoint我說的是,我仍然得到這個錯誤。我究竟做錯了什麼?沒有得到這種錯誤,是不可能有重載的方法?我應該改變他們的名字嗎?

+0

僅僅因爲方法不叫..並不意味着它不在最後的程序集中。最後的組裝需要元數據..,使得在斷開的機會另一個組件通過反射調用它..它知道在被叫方的每個類型(除其他外)。 –

+0

那麼我不應該把它們混入我的幫手類中? – user1306322

回答

1

編譯器關心,因爲它編譯代碼,可以或可以不被調用;儘管如此,它仍然需要編譯代碼並能夠解析類型的定義。

我會建議不要把不同的技術繪製方法在助手類,但如果你的話,我肯定會有所不同他們的名字,像這樣:

public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, 
                System.Drawing.Point p) 
public static RectangleNineSides GetXnaRectangleSide(Microsoft.Xna.Framework.Rectangle rect, 
                Microsoft.Xna.Framework.Point p) 
+0

好吧,那麼爲了清晰起見,我會更改他們的名字。 – user1306322

相關問題