我的FlatFiles项目用于System.Reflection.Emit
在运行时生成反序列化器/序列化器以读取/写入 CVS 文件等。直到最近,我才能够简单地使用传入DynamicMethod
构造函数参数。true
restrictedSkipVisibility
我正在开发的新功能需要我在运行时构建一个类,而不是一个简单的方法。我能够使用AssemblyBuilder
/ ModuleBuilder
/ TypeBuilder
/etc 实现新逻辑。internal
但是,每当我需要访问项目类时,我都会遇到问题。为此,我将[InternalsVisibleTo]属性添加到我的Assembly.cs
文件中,从而使我的动态程序集可见。
当我查看诸如Castle.DynamicProxy.Core 之类的项目时,我发现它们也依赖于[InternalsVisibleTo]
。查看使用DynamicProxy的其他项目,我可以看到它们正在添加相同的属性。使用这些库的任何人还必须添加属性:example。即使那样,也不提供对private
类和成员的访问。
从我在线阅读的内容来看,使用动态程序集似乎根本无法跳过可见性检查。这是真的?我只是在寻找确认。
我的研究还表明,DynamicMethod
跳过可见性检查的能力仅适用于某些环境。换句话说,FlatFiles 不能在更严格的环境(例如 Internet)中工作。真的吗?这可能是迫使我的用户将[InternalsVisibleTo]
属性添加到他们未来的项目的理由。