advanced reflec on metaprogrammming
play

Advanced Reflec+on & Metaprogrammming Jb Evain - PowerPoint PPT Presentation

Advanced Reflec+on & Metaprogrammming Jb Evain <jbevain@novell.com> Mono Team, Novell, Inc. Metaprogrammming Metaprogramming is the wri+ng of


  1. Advanced ¡Reflec+on ¡ & ¡ Metaprogrammming ¡ Jb ¡Evain ¡ ¡<jbevain@novell.com> ¡ Mono ¡Team, ¡Novell, ¡Inc. ¡

  2. Metaprogrammming ¡

  3. “Metaprogramming ¡is ¡the ¡wri+ng ¡of ¡ computer ¡programs ¡that ¡write ¡or ¡ manipulate ¡other ¡programs ¡(or ¡ themselves) ¡as ¡their ¡data, ¡or ¡that ¡do ¡ part ¡of ¡the ¡work ¡at ¡compile ¡+me ¡ that ¡would ¡otherwise ¡be ¡done ¡at ¡ run+me.” ¡ hLp://en.wikipedia.com/wiki/ Metaprogramming ¡

  4. Languages ¡/ ¡Compile ¡+me ¡ metaprogramming ¡ what ¡this ¡talk ¡is ¡not ¡about ¡

  5. programs ¡as ¡data ¡

  6. metadata ¡

  7. headers ¡

  8. tables ¡

  9. CIL ¡

  10. System.Reflec+on ¡ buil+n ¡

  11. System.Reflec+on ¡ • Object.GetType ¡() ¡ • Type.GetTypeFromHandle ¡(…) ¡ • MethodBody.GetILAsByteArray ¡() ¡

  12. Mono.Reflec+on ¡ lightweight ¡reflec+on ¡helper ¡

  13. Mono.Reflec+on ¡ • Run+me ¡IL ¡disassembler ¡ • IL ¡paLern ¡matching ¡ • Property ¡backing ¡field ¡

  14. Mono.Cecil ¡ Swiss ¡Army ¡Knife ¡for ¡assemblies ¡

  15. Cross ¡Pla\orm ¡ • Mono ¡ • .net ¡>= ¡2.0 ¡ • CompactFramework ¡>= ¡2 ¡ • Silverlight ¡>= ¡2 ¡ • WP7 ¡

  16. Why ¡ • Complete ¡metadata ¡access ¡ • No ¡AppDomain ¡bloa+ng ¡ • Collec+ble ¡data ¡ • No ¡+e ¡to ¡a ¡specific ¡mscorlib.dll ¡ • Ability ¡to ¡modify ¡exis+ng ¡assemblies ¡

  17. Why ¡not ¡ • System.Reflec+on.Emit’s ¡ – AssemblyBuilderAccess.Run ¡ – AssemblyBuilderAccess.RunAndCollect ¡

  18. The ¡strong ¡name ¡problem ¡

  19. Similar ¡projects ¡ • Microsoe’s ¡CCI ¡ • IKVM.Reflec+on[.Emit] ¡

  20. usage ¡

  21. achievement ¡

  22. a ¡glimpse ¡at ¡the ¡future ¡

  23. Milo ¡ A ¡level ¡higher ¡

  24. links ¡ • hLp://twiLer.com/jbevain ¡ • hLp://evain.net/blog ¡ • hLp://github.com/jbevain/cecil ¡ • hLp://groups.google.com/group/mono-­‑cecil ¡ • hLp://github.com/jbevain/mono.reflec+on ¡

  25. ques+ons ¡? ¡

Recommend


More recommend