如何通過反射識別匿名方法?如何識別System.Reflection中的匿名方法
6
A
回答
7
看看方法的屬性,看看方法是否用CompilerGeneratedAttribute裝飾。
匿名方法(以及其他對象,如自動實現的屬性等)將添加此屬性。
例如,假設您的類有一個類型。匿名方法將在:
Type myClassType = typeof(MyClass);
IEnumerable<MethodInfo> anonymousMethods = myClassType
.GetMethods(
BindingFlags.NonPublic
| BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.Static)
.Where(method =>
method.GetCustomAttributes(typeof(CompilerGeneratedAttribute)).Any());
這應該返回在MyClass
上定義的任何匿名方法。
4
從我所看到的,正則表達式是:
<(\w|_)+>b_.+
7
你不能,因爲沒有這樣的東西作爲對IL水平匿名方法 - 他們都被點名了,都屬於命名類型。而且C#和VB編譯器將匿名方法轉換爲命名方法和類型的方式完全是實現定義的,並且不能被依賴(這意味着它可以隨着任何更新而改變,即使在次要版本/修補程序中也是如此)。
+3
+1:這在技術上是「正確」的答案 - 但[編譯器生成]在實踐中運行相當可靠。 – 2010-03-23 20:44:38
相關問題
- 1. 如何從匿名方法
- 2. 如何識別fxcop中的方法
- 3. 系統中如何識別匿名內部類?
- 4. 需要一種方法來識別pmap中顯示的匿名地圖
- 5. Eclipse不識別匿名內部類
- 6. Android Studio不識別匿名類嗎?
- 7. 的System.Reflection沒有方法
- 8. 匿名匿名方法未授權?
- 9. 如何:轉換匿名方法VB.NET
- 10. LINQ到實體無法識別方法「方法名稱」方法
- 11. 可選的匿名方法
- 12. 匿名方法的問題
- 13. 如何識別使用屬性名稱的setter方法?
- 14. 的System.Reflection用法
- 15. 在混合方法中識別方法名
- 16. 在Django Rest框架中識別唯一的匿名用戶
- 17. 方法未識別
- 18. 是否有可能在Ruby中識別別名方法?
- 19. C中的遞歸和匿名方法#
- 20. Invoke調用中的匿名方法
- 21. C#中的簡單匿名方法
- 22. 什麼是C#中的匿名方法?
- 23. C#2中的代表/匿名方法
- 24. messagebox.show中的Lambda匿名方法
- 25. 匿名類中的重寫方法
- 26. 匿名內部類中的方法
- 27. 如何識別構造方法?
- 28. 如何識別JavaScript方法(函數)
- 29. 使用的System.Reflection獲取一個方法的全名
- 30. 如何檢索匿名函數中的類的方法?
你可以多說一些你想完成的事情嗎? – 2010-03-23 20:28:13