接受表单元素作为方法参数?
我正在编写一个方法,它将获取传递的表单元素的屏幕截图,然后将其打印出来。 我面临一些挑战。 我希望能够使这个方法足够通用,几乎可以接受任何类型的表单元素。 我将“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();