我的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
属性的理由。