2011-02-11 106 views
5

我正在寫一個方法,它會截取一個傳遞的表單元素,並將其打印出來。我面臨一些挑戰。我希望能夠使這個方法具有通用性,足以接受任何類型的表單元素。我設置「元素」參數來輸入「object」。我想我還需要傳遞一個「類型」參數,或者有一種方法可以找出傳遞後對象的類型?接受表單元素作爲方法參數?

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

} 

我以正確的方式接近這個問題嗎?任何意見,將不勝感激,謝謝!

+0

你怎麼說,我們在這裏編輯你的標題,以更好地反映手頭上的問題呢? – 2011-02-11 23:27:03

回答

3

我猜你element應該是Control,每Control具有DrawToBitmap()方法,您可以用利用它的「屏幕截圖」。

所以你可以忘記所有關於類型參數,因爲你不需要它,因爲polymorphism

+0

嘿,這很不錯。現在我有點好奇,除了一件事外,這個工作很好。當我嘗試打印richTextBox時,如果框內有文本,它實際上不會打印。有沒有辦法解決? – sooprise 2011-02-11 21:28:50

4

您可以使用is/as運算符或使用GetType找出什麼類型的東西。如果你必須使用它們,通常會有一點點的設計氣味。你打算做什麼,這是特定類型的?

如果您在談論視覺元素,您可能需要使用Control而不是object

1

我認爲object太籠統了,我會換成Control。你不需要傳入類型,只需使用is就可以查詢它的類型。

1

展開建議使用Control基類的答案。我會讓你的函數成爲一個擴展方法來避免創建ASDFHelper,ASDFUtility和其他充滿靜態方法的類。

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

這可以被調用這樣

new TextBox().PrintFormElement(); 
相關問題