覆盖Graphics.DrawLine

我寻求@override Graphics类的DrawLine方法,但我不确定这是否可行?

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

任何人都有一些经验或建议来覆盖这种特定的方法?

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

谢谢。

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

 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 } 

做一个g.CheckedDrawLine(...)而不是CheckedDrawLine(g, ...)

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

您可以

  • 预处理(即ILDASM / modify / ILASM)所有调用程序集都使用您的新方法
  • 用您自己的程序替换System.Drawing程序集
  • 使用一些现有的框架,如果你需要它来进行unit testing,它可以覆盖像Moles或Fakes这样的方法。