假設我通過以下方式獲得的MethodInfo:如何使用反射來重構按名稱獲取方法?
Assembly assembly = Assembly.Load(assemblyName);
Type type = assembly.GetType(nameSpaceName+"."+className);
MethodInfo mi = type.GetMethod("myMethod", bf); // bf are the binding flags.
但後來我決定改變myMethod
情況/名稱。
有沒有辦法要麼:
- 重構,使其變爲字符串中的名稱。
- 更改反射調用,以便它不使用方法的名稱作爲字符串獲取該方法?
這樣做的原因是我可以測試我需要使用反射的代碼,但我寧願不要求沒有人更改代碼中的方法名稱。
一句話:小心!這一切都將取決於你如何以及爲什麼使用反射。「myMethod」這個名字有什麼特別之處?類沒有實現一個接口,或類似的東西? – 2011-04-05 17:01:33
嗯......我想myMethod是特殊的,我知道另一種方法稱之爲myMethodCaller。所以當我測試時,我希望看到myMethod的調用者爲myMethodCaller。我想我可以期望不改變這兩種方法......但我不喜歡那樣。 – user420667 2011-04-05 17:17:57
在你的場景中有可能讓動態加載的程序集中的類型實現一個接口嗎?這樣你就不必通過反射調用方法了(但是仍然可以插入體系結構)。 – RQDQ 2011-04-05 17:20:59