2009-09-11 34 views
0

例如我有一個類,它有自己的屬性,我通過類的名稱和要調用的屬性的名稱函數如何編寫動態VB.net代碼?

說例如exp是我傳遞的變量其中包含一個值=「ClassA,Property1」

  Function Property2BCalled(byval exp as String) 

      dim classname = split(exp,",")(0) 
      dim propertyname=split(exp,",")(1) 
      dim value= classname.propertyname 

      End Function 

我想做類似的東西,上面給出的。

+2

很少有情況下,這類事情是一個好主意,它通常保留給需要變通方法來執行代理或對象創建的框架。你爲什麼想這樣做? – 2009-09-11 05:26:44

+0

這聽起來很瘋狂,我在執行asp.net mvc中的單元測試時遇到了本地化問題,因爲它引發了一個錯誤,那就是無法爲app_globalresources文件夾找到虛擬路徑,而且我無法嘲笑它,所以我我是否把所有的資源都放到了一個普通的文件夾中,然後從那裏訪問它,但是,現在我需要編寫一個if/else或者選擇案例來運行資源文件,即從哪個資源文件中獲取信息。 ,以便我想到這樣做的想法。 – kurozakura 2009-09-11 11:41:35

回答

0

您可以使用反射來執行此任務。 請記住,反射是緩慢的,但它可以完成。 當您找到名稱匹配,然後枚舉屬性,然後調用方法/屬性等時,您將列舉組件中可用的類。

但是,定義一個接口然後有一個共同點您的項目可以與之溝通的簽名,然後您需要的只是一個工廠抽取您數據中正在提供的類的相應實例。

+0

如何獲取我要發送類字符串名稱的類的類型? 暗淡了作爲字符串= 的GetType(類名).getProperty(「」)。的GetValue(「」,爲Nothing)的ToString() 將被給我發送類作爲字符串的名稱以及 – kurozakura 2009-09-11 14:47:35

+0

類型但即時通訊For Each t As As Type [Assembly] .GetExecutingAssembly.GetTypes() If t.Name =「yourclassname」Then end if if next – 2009-09-14 00:43:38