仅标记一个内部类对其他程序集可见

时间:2014-07-24 08:42:00

标签: c# .net compilation .net-assembly solution

我知道InternalsVisibleTo属性的存在,它使所有内部类对外部程序集可见。

在我的情况下,我有一个 Utilities 项目,其中所有类只应对一个特定程序集可见。 除了一个类之外的所有类,其中包含扩展方法,这些方法应该对解决方案中的所有其他程序集可见,而不是对外部项目可见。

哪种方法可以达到这个效果?

2 个答案:

答案 0 :(得分:0)

将它们分开。将公共类放在自己的程序集中。

无法将特定类指定为“内部可见”。

答案 1 :(得分:0)

好吧,实现这一目标的一种方法是,如果您使用的是能够实现此功能的IDE,则可以使用Extension方法与该类共享该文件。这样,如果您将其标记为内部,并将所有其他类标记为公共,那么您可以访问扩展方法,但它不是公共的。此外,编辑扩展方法类时,这将反映在解决方案中的所有程序集中。在Visual Studio中,实现此目的的方法是右键单击您的项目并选择Add - >添加现有项目:

enter image description here

然后找到您的文件并选择添加为链接:

enter image description here

请注意,朋友程序集应主要用于调试和测试目的。使用它们作为特征是代码气味。