接受表单元素作为方法参数?

我正在编写一个方法,它将获取传递的表单元素的屏幕截图,然后将其打印出来。 我面临一些挑战。 我希望能够使这个方法足够通用,几乎可以接受任何类型的表单元素。 我将“element”参数设置为“object”。 我想我还需要传递一个“类型”参数,或者有没有办法弄清楚对象在传递后的类型?

static public void PrintFormElement(object element, ?type?){ } 

我是以正确的方式解决这个问题吗? 任何建议将不胜感激!

我猜你的element应该是Control ,每个Control都有DrawToBitmap()方法,你可以使用它来截取它的’截图’。

所以你可以忘记关于类型参数的所有内容,因为你不需要它,因为多态性 。

你可以找出使用is/as运算符或使用GetType 。 如果你不得不使用它们,通常会有一点设计气味。 你打算做什么特定类型的?

如果您在谈论视觉元素,则可能需要使用Control而不是object

我认为object太通用了,我会去控制 。 你不需要传入类型,你可以使用is查询它的类型。

扩展建议使用Control基类的答案。 我将使您的函数成为扩展方法,以避免创建ASDFHelper,ASDFUtility和其他充满静态方法的类。

 static public void PrintFormElement(this Control element){ element.DrawToBitmap(); } 

然后可以像这样调用它

 new TextBox().PrintFormElement();