假設我實例化一個像這樣的對象:如果我只有一個包含方法名稱的字符串,可以調用一個方法嗎?
Dim PerformPageSize as New HtmlToRtf.CPageStyle.CPageSize()
的對象包含了我已經把這樣的一個枚舉的方法的一些成員,我的意思是,枚舉字符串是一樣的方法名稱:
Friend Enum PageSize
Auto
A3
A4
A5
A6
Folio
Letter
Statement
End Enum
而且我通過枚舉作爲參數的方法:
Friend Sub Test(Byval _pagesize as PageSize)
End Sub
好了,現在我的意圖(避免書面方式大的選擇情況和d O此efficientlly)是解析枚舉值名稱來調用方法(它具有exactlly同名)
所以我想簡化此:
Friend Sub Test(Byval _pagesize as PageSize)
Dim PerformPageSize As New HtmlToRtf.CPageStyle.CPageSize()
Select Case PageSize
Case PageSize.Auto
PerformPageSize.Auto()
Case PageSize.A3
PerformPageSize.A3()
Case PageSize.A4
PerformPageSize.A4()
Case PageSize.A5
PerformPageSize.A5()
' Etc...
End Select
End Sub
弄成這樣其他:
(我知道,這個代碼有沒有意義,但只是瞭解的想法,因爲我不知道應該如何使用反射或其他任何一個真正的解決方案):
Friend Sub Test(Byval _pagesize as PageSize)
Dim PerformPageSize As New HtmlToRtf.CPageStyle.CPageSize()
' Parse the Enum value as the Method from the object
Dim Method = PerformPageSize.TryPase(GetType(PageSize), _pagesize).ToString
' Call the equivalent method
PerformPageSize.[Method]()
End Sub
該代碼使用C#,但無論如何,我試圖翻譯它來測試它沒有成功 – ElektroStudios
[策略模式](http://www.dofactory.com/Patterns/PatternStrategy.aspx)可能更合適。 [切換語句的氣味](http://c2.com/cgi/wiki?SwitchStatementsSmell)。 – thepirat000