2012-08-30 34 views
-1

讓我們考慮一些方法得到的SqlConnection字符串參數

method1(argument 1, argument 2, argument 3) 
{ 
    con.open(); 
    con.close(); 
} 

method 2(argument 1,argument 2,argument 3,argument 4) 
{ 
    con.open(); 
    con.close(); 
} 

method 3(argument 1,argument 2) 
{ 
    con.open(); 
    con.close(); 
} 

用於獲取參數所必需的連接,如[的SqlCommand CMD,SqlConnection的康涅狄格州,的SqlTransaction反,的CommandType上述三種方法cmdType]

所有這些方法都編譯爲dll。

現在我需要創建掃描上述方法的項目,並返回其論點成立的連接字符串輸出

現在我的查詢是

  1. 我們怎樣才能找到哪個參數包含連接字符串在裏面?
  2. 大家都知道,用out連接字符串con.open會拋出錯誤,有沒有什麼辦法可以找到它?

等待您的寶貴建議和命令

編輯

我最終的解決方案是,我將有一個DLL只有我,我的工作是掃描DLL並找到了con.open方法存在於其中,最後我需要獲取傳遞給該方法的參數,以查找連接字符串在哪裏進入方法

+0

你的問題不清楚。爲什麼你需要從連接字符串中獲取「參數」?你不應該創建這樣的輔助方法。相反,在創建和使用連接和其他一次性對象(如命令)的地方使用'use-statetement'。否則,可能會導致連接保持開啓,從而導致性能問題或錯誤。 –

+0

您應該知道哪個參數(參數)中包含連接字符串,因爲您應該智能地命名它們。那麼你真正的問題是什麼? – slugster

+0

我已編輯它 – GowthamanSS

回答

0

您可以使用此代碼嘗試

If(argument is SqlConnection) 
{ 

} 

但如果你有最新版本的框架,你可以使用optinal和命名參數

0

你爲SqlConnectionStringBuilder probabby sarching。

其中參數是有效的連接字符串。之後:

解析爲名稱/值對。無效的鍵名會引起 KeyNotFoundException。

0

你想做什麼,請解釋m沒有得到它。

但你可以做

try 
{ 
    con.open(); 
    con.close(); 
} 
catch 
{ 
    //show message 
} 
+0

我只有我的DLL我不知道代碼是如何寫在它裏面的我的工作是編寫通用程序掃描一切,並給出我con.open存在哪個類以及連接字符串賦予該方法的參數 – GowthamanSS

0

您可以使用reflection得到method information,但不告訴你哪些參數是連接字符串 - 它只是一個字符串,畢竟。您可以通過檢查name of the parameter來進行有根據的猜測。

我不確定你爲什麼需要這樣做 - 當你編寫調用這些方法的代碼時,VS IDE intellisense會給你很多信息。

+0

我也回顧了方法名,其中con.open僅用於反射,但我的目標是查找傳遞給該方法的參數,該參數包含連接字符串 – GowthamanSS