0

我寻求类@overrideDrawLine方法Graphics,但我不确定这是否可能?

我试图在该方法中进行验证,以便它停止在我将提供的某个 Y 变量处绘制,从而有效地向该方法添加一个新参数。

有人对覆盖该特定方法有一些经验或建议吗?

我不确定这个问题,所以我不知道我是否可以简单地做@Override然后给它一个验证,因为它正在绘制单独的像素点。

谢谢。

4

2 回答 2

1

你只需要一个单独的方法。把它放在你想要的任何地方:

void CheckedDrawLine(Graphics g, int x1, int y1, int x2, int y2, int stopY) {
    // Do the validation, draw the line
}

您可以通过将其粘贴在以下内容中来使其成为扩展方法static class

void CheckedDrawLine(this Graphics g, int x1, int y1, int x2, int y2, int stopY) {
    // Do the validation, draw the line
}

做 ag.CheckedDrawLine(...)而不是 a CheckedDrawLine(g, ...)

于 2012-09-05T23:55:30.403 回答
1

普通代码不可能替换不是设计为替换/覆盖的方法。

你可以

  • 预处理(即 ILDASM/modify/ILASM)所有调用程序集以使用您的新方法
  • 用您自己的替换 System.Drawing 程序集
  • 如果您需要它进行单元测试,请使用一些允许覆盖 Moles 或Fakes等方法的现有框架。
于 2012-09-06T00:37:51.117 回答