Search The Blog
About this site

@RoyOsherove

Subscribe!

This site aims to connect all the dots of my online activities - from tools, books blogs and twitter accounts, to upcoming conferences, engagements and user group talks.

from 5whys.com
Twitter: @RoyOsherove
My Book: The Art of Unit Testing
Latest Posts
« Advertise your Tool/Component/Site on ISerializable.com Blog | Main | New Tapuz User Group Meeting in Israel (and is it really needed?) »
Sunday
Apr232006

My Tech-Ed Talk: Deep Reflection - What's new & Hot in Reflection 2.0

My upcoming Tech-Ed Talk in Israel will be all about what’s new and Cool in .NET 2.0 Reflection. Over the coming weeks until TechEd, I’ll supply links and information detailing the stuff I’ll be talking about.

For the past three weeks or so I’ve been totally immersed in Reflection-Land.

There are seriously cool things going on behind the scenes, and, frankly,  I was surprised at the amount of new stuff that is now possible.

One of my favorite features is the new ability to reflection over a Method’s Body. That is, get the actually IL for the method in the form of a Byte Array. You can then parse the IL and do what ever you want with it (including building your own version of reflector, for example).

This is possible due to a new API added on the MethodBase class, called: “GetMethodBody()”. You can then use the resulting “MethodBody” object and invoke it’s “GetILAsByteArray()” method.

 

It’s really quite simple.

Parsing the Byte Array is a different matter, though. I’ll talk about that in a future post. For now, suffice to say that you can do wonderful things once you have the IL.

You can basically get the IL from any MethodInfo object at runtime and parse it (for security reasons, you might wanna make sure that there are no method calls to a specific method from any plugin you are about to load)

 

I was also able to create a MethodInfo Debugger Visualizer, based on the code released here by a guy from the Reflection team. His visualizer shows the IL for a DynamicMethod object at debug time (that’s also a new class I’ll talk about in a future post). It took me a day or so to figure out how to extend it to show the IL for any method info object during debugging, and it works quite well!

In fact, you can now write a method that writes its own code in IL J

 

All that and more, in the near future, I promise J

Meanwhile, here’s a nice post form Joel Pobar, highlighting some of the new features in Reflection 2.0. I’ll be elaborating on these more, but you can follow the links on his post as well to discover a whole new world of possibilities.

Cross Posted from Blogs.Microsoft.Co.Il/Blogs/Royo

PrintView Printer Friendly Version

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>