合并程序集是否会改变internal关键字的作用域?
我相当确定它不会产生影响(或者至少不会有什么影响),因为任何引用最终程序集的人都无法访问internal类。
这可能是一个没有实际价值的假设性问题,但我还是很好奇。
编辑:我的意思是使用ILMerge进行合并,而不是将源代码组合成一个可构建的程序集。
合并程序集是否会改变internal关键字的作用域?
我相当确定它不会产生影响(或者至少不会有什么影响),因为任何引用最终程序集的人都无法访问internal类。
这可能是一个没有实际价值的假设性问题,但我还是很好奇。
编辑:我的意思是使用ILMerge进行合并,而不是将源代码组合成一个可构建的程序集。
是的,一旦程序集合并,它们就可以访问彼此的内部类。一些混淆器会利用这一点,将公开调用转换为内部调用,然后对其进行混淆,使其更加安全。 参考:SmartAssembly
顺便提一下,使用ILMerge时,您可以使用/internalize命令行开关,使主要程序集以外的所有公共类都变成内部类,从而将公共接口从最终用户的视线中移除,但程序集仍然正常工作。
public class MyClassA { ... }
并且组件B:
internal class MyClassB { ... }
MyClassA可能没有权限反射MyClassB的公共成员。如果它们合并到同一个程序集中,则MyClassA可能会获得这样的权限。