3

我的FlatFiles项目用于System.Reflection.Emit在运行时生成反序列化器/序列化器以读取/写入 CVS 文件等。直到最近,我才能够简单地使用传入DynamicMethod构造函数参数truerestrictedSkipVisibility

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

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

从我在线阅读的内容来看,使用动态程序集似乎根本无法跳过可见性检查。这是真的?我只是在寻找确认。

我的研究还表明,DynamicMethod跳过可见性检查的能力仅适用于某些环境。换句话说,FlatFiles 不能在更严格的环境(例如 Internet)中工作。真的吗?这可能是迫使我的用户将[InternalsVisibleTo]属性添加到他们未来的项目的理由。

4

0 回答 0