我正在尝试创建一个“反向”扩展Rectangle
的类。我希望能够将这个方法放在课堂上:
public Point RightPoint()
{
return new Point(this.X + this.Width, this.Y + this.Height / 2);
}
然后拨打rectangle.RightPoint()
;并获得返回值。 (X
,Y
,Width
和Height
是Rectangle
)的字段。
这可能吗?或者我是否需要制作这些静态方法,然后将它们传递给Rectangle
?
答案 0 :(得分:3)
我认为你需要一个extension method
public static Point RightPoint(this Rectangle rectangle)
{
return new Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height / 2);
}
上面的代码应该放在static
类中。
然后你可以在Rectangle
对象上执行此操作:
Rectangle rect = new Rectangle();
Point pointObj = rect.RightPoint();
答案 1 :(得分:3)
您可以使用扩展方法:
public static class ExtensionMethods
{
public static Point RightPoint(this Rectangle rectangle)
{
return new Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height / 2);
}
}
这将允许您使用它就像它是Rectangle结构的一部分:
Point rightPoint = rect.RightPoint();
答案 2 :(得分:3)
如果要将方法添加到现有类,您的选项是:
选项#2需要创建新类型,选项#3要求您更改类。我会建议像这样的扩展方法:
public static Point RightPoint(this Rectangle rect)
{
return new Point(rect.X + rect.Width, rect.Y + rect.Height / 2);
}
这样您就可以进行所需的通话:
var rectangle = new Rectangle();
var point = rectangle.RightPoint();