可以覆盖.Net程序集的访问限制吗?

时间:2012-10-19 15:37:33

标签: .net reflection assemblies access-modifiers il

我需要为Metro编译一个程序集,并且基本上检查一些编译器生成的代码是否可以从常规控制台程序中运行(这应该非常简单)。我的问题是编译器生成的代码会将所有感兴趣的东西作为内部和/或私有(类和方法)发出。

是否有指定我的控制台程序就像超级好友或什么?此外,丑陋的黑客是可以接受的,这仅适用于集成测试。这样做的最佳方式是什么?我想到的唯一两种方式是很多反思,或者拆解IL,使用一些非常复杂的正则表达式并用公共替换所有私有/内部成员。

1 个答案:

答案 0 :(得分:2)

  

是否有指定我的控制台程序就像超级好友或其他什么?

您可以使用InternalsVisibleToAttribute - 将其应用于“目标”程序集,引用控制台应用程序。这不会让您访问私有成员,但如果internal访问权限足够好,则应该没问题。

唯一的警告是,我不确定该属性是否适用于Metro程序集......但它确实值得一试。