Dynamic Assembly/Types With ReflectionPermissionFlag.RestrictedMemberAccess
Dynamic Assembly/Types With ReflectionPermissionFlag.RestrictedMemberAccess
My FlatFiles project uses System.Reflection.Emit to generate deserializers/serializers at runtime to read/write CVS files, etc. Until recently, I was able to simply use DynamicMethod passing in true for the restrictedSkipVisibility constructor parameter.
System.Reflection.Emit
DynamicMethod
true
restrictedSkipVisibility
New features I am working on require I build a class at runtime instead of a simple method. I was able to implement the new logic using AssemblyBuilder/ModuleBuilder/TypeBuilder/etc. However, I ran into issues whenever I needed to access internal project classes. For that, I added the [InternalsVisibleTo] attribute to my Assembly.cs file, giving visibility to my dynamic assembly.
AssemblyBuilder
ModuleBuilder
TypeBuilder
internal
Assembly.cs
When I look at projects like Castle.DynamicProxy.Core, I see they are relying on [InternalsVisibleTo], as well. Looking at other projects using DynamicProxy, I can see they are adding the same attribute. Anyone using these libraries must also add the attribute: example. Even then, doesn't provide access to private classes and members.
[InternalsVisibleTo]
private
From what I read online, it sounds like skipping visibility checks simply isn't possible using dynamic assemblies. Is this true? I am just looking for a confirmation.
My research also indicates that DynamicMethod's ability to skip visibility checks only works in certain environments. In other words, FlatFiles wouldn't work in a more restrictive environment (e.g., Internet). Is that true? That might be justification to force my users to add the [InternalsVisibleTo] attribute to their projects going forward.
DynamicMethod
[InternalsVisibleTo]
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Comments
Post a Comment