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

时间:2011-02-11 19:57:00

标签: c# winforms

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

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

}

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

4 个答案:

答案 0 :(得分:4)

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

如果您在讨论视觉元素,则可能需要使用Control代替object

答案 1 :(得分:3)

我猜您的element应为Control,并且每个Control都有DrawToBitmap()方法,您可以使用它来截取“截图”。

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

答案 2 :(得分:1)

我认为object过于通用,我会选择Control。您不需要传入类型,您只需使用is查询它的类型。

答案 3 :(得分:1)

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

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

然后可以像这样调用

new TextBox().PrintFormElement();