C# 如何解决方法参数中同名类型的错误?

C# 如何解决方法参数中同名类型的错误?,c#,C#,我创建了两个重载方法,其参数类型具有相似的名称(但不相同),它们的声明如下所示: public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, System.Drawing.Point p) public static RectangleNineSides GetRectangleSide(Microsoft.Xna.Framework.Rectangle rect, Microsoft.Xna.

我创建了两个重载方法,其参数类型具有相似的名称(但不相同),它们的声明如下所示:

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)
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)
正如您所看到的,两种方法中的参数都不同,但是当这样调用其中一种方法时:

h.RectangleNineSides side = h.GetRectangleSide(new Microsoft.Xna.Framework.Rectangle(), new Microsoft.Xna.Framework.Point());
在我的XNA项目中,我遇到一个错误,错误是:

类型“System.Drawing.Point”是在未引用的部件中定义的。您必须添加对程序集“System.Drawing,Version=4.0.0.0,诸如此类”的引用

但是,如果在当前项目的任何地方都没有调用另一个方法,为什么编译器会关心它呢


除XNA的类型外,任何WinForms项目中都会出现类似错误。我甚至明确地写下了我所说的
矩形
,我仍然得到这个错误。我做错了什么?如果没有这种错误,重载方法是不可能的吗?我应该改变他们的名字吗?

编译器很关心,因为它编译的代码可能会被调用,也可能不会被调用;尽管如此,它仍然需要编译代码并能够解析定义类型的位置

我建议不要将不同的技术绘图方法放在助手类中,但是如果您选择,那么我肯定会以不同的方式命名它们,如下所示:

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)
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)

编译器会在意,因为它编译的代码可能会被调用,也可能不会被调用;尽管如此,它仍然需要编译代码并能够解析定义类型的位置

我建议不要将不同的技术绘图方法放在助手类中,但是如果您选择,那么我肯定会以不同的方式命名它们,如下所示:

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)
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)

只是因为没有调用该方法。。并不意味着它不在最终装配中。总装需要元数据。。因此,在不可能的情况下,另一个程序集通过反射调用它。。它知道被调用方中的每种类型(以及其他内容),所以我不应该在我的helper类中混合使用它们,因为该方法没有被调用。。并不意味着它不在最终装配中。总装需要元数据。。因此,在不可能的情况下,另一个程序集通过反射调用它。。它知道被调用方中的每种类型(除其他外)。因此,我不应该在助手类中混合使用它们?好吧,那么为了清晰起见,我将更改它们的两个名称。好吧,为了清晰起见,我将更改它们的两个名称。