Is there a way to wrap methods in other methods transparently in C#? I want to achieve what is done by Moose's around functionality: http://search.cpan.org/perldoc?Moose::Manual::MethodModifiers
EDIT: And by transparent I mean without modifying the original method.
I think you're looking for what's termed Aspect Oriented Programming. There are many C# libraries to help with this. One is called PostSharp (The free version of PostSharp supports this functionality). Here is an example similar to the moose example. This creates a Trace Attribute which you can use on other methods to tack on this extra functionality:
You would add it to method "Foo" by placing the Trace attribute right before it:
Now when Foo executes, the above OnEntry method will run before it, and OnExit will run right after.