How can you identify anonymous methods via reflection?
Look at the attributes of the method, and see if the method is decorated with CompilerGeneratedAttribute.
Anonymous methods (as well as other objects, such as auto-implemented properties, etc) will have this attribute added.
For example, suppose you have a type for your class. The anonymous methods will be in:
Type myClassType = typeof(MyClass);
IEnumerable<MethodInfo> anonymousMethods = myClassType
.GetMethods(
BindingFlags.NonPublic
| BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.Static)
.Where(method =>
method.GetCustomAttributes(typeof(CompilerGeneratedAttribute)).Any());
This should return any anonymous methods defined on MyClass
.
You cannot, because there is no such thing as an anonymous method on IL level - they're all named, and all belong to named types. And the way C# and VB compilers translate anonymous methods to named methods and types is entirely implementation-defined, and cannot be relied on (which means that, for example, it can change with any update, even in minor releases / hotfixes).
From what I can see, that Regex pattern would be:
<(\w|_)+>b_.+
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With