Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to skip visibility checks when generating dynamic IL with MethodBuilder's?

When generating IL using DynamicMethod it's possible to call methods and access fields that would be otherwise un-accessible if you provide 'true' for the restrictedSkipVisibility parameter in the DynamicMethod constructor

I would prefer to emit dynamic IL into a dynamic assembly instead so I can save the generated IL into an assembly at build time. If I use this method I have to use a MethodBuilder instead of a DynamicMethod. However I need to be able to skip visibility checks so I don't get MethodAccessException's when I run my dynamic code. Is there a way to do this and if so how?

like image 904
Brandon Cuff Avatar asked Sep 29 '09 18:09

Brandon Cuff


1 Answers

When using MethodBuilder into a dynamic assemblies, you are bound to the same rules as the compiler generated assemblies. So, inter-assembly visibility is governed by:

  • The ReflectionPermission attribute.
  • The InternalsVisibleTo attribute.

Please read the documentation and the samples, to see if it could fit your needs.

like image 102
Laurent Etiemble Avatar answered Oct 21 '22 06:10

Laurent Etiemble