2012-07-05 146 views
0

C#中有沒有辦法獲取與某種擴展方法一起使用的所有參數?獲取解決方案中所有方法參數的方法

例子:

public static string GlueStrings(this string mystring, string otherString) 
{ 
    return mystring + otherstring; 
} 

在窗體2

string string1 = "Foo"; 
string string2 = string1.GlueStrings("bar"); 

在某些方法在Form1中

string string1 = "Glued"; 
string string2 = string1.GlueStrings("Strings"); 

一些方法有沒有一種方法,我可以創建方法,它會列出所有的參數在整個解決方案中與該方法一起使用,我對來自整個解決方案的參數otherString感興趣離子?

UPDATE:

這與字符串只是一個例子,我需要它與不同類型的工作。就像在MVC控制器annonations中,你可以得到所有使用某些annonation的控制器。

+2

什麼在運行時構建的字符串?或者你只是想要不斷的字符串? – Tudor 2012-07-05 20:34:28

+1

使用正則表達式的完整解決方案搜索可以執行此操作。 – Oded 2012-07-05 20:34:52

+1

這不是什麼「查找所有參考」? – Tyrsius 2012-07-05 20:35:25

回答

1

您可以在您的類中保留一個靜態的ConcurrentBag並在運行時爲其添加每個參數。

+0

我明白了,但每次調用此方法時都會增加開銷。 – formatc 2012-07-05 20:45:34

+0

@ user1010609只是爲了澄清;根據上面的評論,你只打算在啓動時調用它,這意味着你只對編譯時已知的那些參數值感興趣......對嗎? – McGarnagle 2012-07-06 00:15:47

+0

是的,這是正確的。 – formatc 2012-07-06 00:17:37

0

不是當它涉及到性能

但你可以使用MethodBase.GetParameters

否則

怎麼做到這一點的最佳方式(線程安全http://msdn.microsoft.com/en-us/library/system.collections.concurrent.aspx併發收集) GlueStrings(this string mystring,params object [] others)

PS:我還沒試過它或單位t相關捐資它

更新:通過你的請求

假設類膠水有那麼方法GlueStrings:

ParameterInfo[] parameterInfos = typeof (Glue).GetMethod("GlueStrings").GetParameters(); 
+0

你能舉個例子嗎?性能不是必需的,因爲我只打算在MVC/Webforms的應用程序啓動時使用此代碼。 – formatc 2012-07-05 20:42:55

+0

這很好,但是我如何從parametarInfo中得到實際值,在我的例子「Strings」和「bar」中呢? – formatc 2012-07-05 21:06:15

+0

恐怕這不會幫助你的查詢,所以將刪除我的答案對不起,浪費你的時間 – HatSoft 2012-07-05 21:19:52

相關問題