如何将所有公共方法转换为内部方法?

时间:2013-09-12 14:07:04

标签: c# internal

在部署项目之前,我想将所有public方法设置为internal方法。有人知道Visual Studio中的内置函数或外部工具来执行此类任务吗?

3 个答案:

答案 0 :(得分:2)

通过一些微不足道的重构,ILMerge可以在这里工作。 ILMerge可以将多个程序集合并为一个,并将不属于主程序集的所有内容的可访问性更改为internal。通过将当前项目分成两个项目(一个包含所有代码的库,以及一个除了转发到库中真实代码之外什么都不做的帮助程序可执行文件),您可以在构建之后将它们合并回一个文件,所有库位不再公开。

答案 1 :(得分:1)

如果出于测试原因公开了属性/方法,您应该查看Brad Wilsons博客:Testable Object Pattern

通过这种方式,您无需切换,一切都保持在内部开发中。

或者看一下InternalsVisibleTo

上的Jon Skeets建议

答案 2 :(得分:0)

我只能想到你想要做的两个原因:

  • 安全。在这种情况下,您的想法是错误的:访问修饰符是一种安全机制。它们是设计关注点,描述了API如何呈现自身。无论访问修饰符如何,任何调试器仍然可以访问您的所有方法。

  • 您在开发期间使用了另一个应具有完全访问权限的程序集。在这种情况下,您可以将所有内容internal保留为friend assembly

相关问题