具有ReflectionPermissionFlag.RestrictedMemberAccess的动态程序集/类型

时间:2018-06-29 17:28:34

标签: .net backwards-compatibility reflection.emit internalsvisibleto .net-security

我的FlatFiles项目使用System.Reflection.Emit在运行时生成反序列化器/序列化器,以读取/写入CVS文件等。直到最近,我还能够简单地使用DynamicMethod传入{{ 1}} true constructor parameter

我正在使用的新功能要求我在运行时构建类,而不是简单的方法。我能够使用restrictedSkipVisibility / AssemblyBuilder / ModuleBuilder / etc /来实现新的逻辑。但是,每当需要访问TypeBuilder项目类时,我都会遇到问题。为此,我在internal文件中添加了[InternalsVisibleTo]属性,使我的动态程序集可见。

当我查看诸如Castle.DynamicProxy.Core之类的项目时,我也看到它们也依赖于Assembly.cs。使用DynamicProxy查看其他项目 ,我看到它们正在添加相同的属性。使用这些库的任何人还必须添加属性:example。即使如此,它也不提供对[InternalsVisibleTo]类和成员的访问。

从我在网上阅读的内容来看,听起来好像无法使用动态程序集跳过可见性检查。这是真的?我只是在寻找确认。

我的研究还表明,private跳过可见性检查的能力仅在某些环境中有效。换句话说,FlatFiles不能在更严格的环境(例如Internet)中工作。真的吗?这可能是迫使我的用户在以后的项目中添加DynamicMethod属性的理由。

0 个答案:

没有答案