反向扩展类
本文关键字:扩展 | 更新日期: 2023-09-27 18:00:19
我正在尝试创建一个"反向"扩展Rectangle
的类。我想能够把这个方法放在类中:
public Point RightPoint()
{
return new Point(this.X + this.Width, this.Y + this.Height / 2);
}
然后调用CCD_ 2;并得到返回值。(X
、Y
、Width
和Height
是Rectangle
的字段)。
这可能吗?还是我需要制作这些静态方法,然后向它们传递Rectangle
?
我认为您需要一个扩展方法
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();
您可以使用扩展方法:
public static class ExtensionMethods
{
public static Point RightPoint(this Rectangle rectangle)
{
return new Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height / 2);
}
}
这将允许您使用它,就像它是矩形结构的一部分一样:
Point rightPoint = rect.RightPoint();
如果您想将一个方法添加到现有的类中,您可以选择:
- 为Rectangle类编写一个扩展方法
- 从Rectangle类继承,并将方法添加到子类中
- 将成员直接添加到Rectangle类中
选项#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();