C#使类对除自己以外的所有命名空间都不可见

时间:2018-05-15 16:13:27

标签: c# namespaces visibility

假设我有名称空间Events,其中只包含类EventManagerEventType

我希望EventType在任何其他名称空间中不可见,唯一应该能够看到EventType的类是EventManager

我该怎么做?我读过有关Friend的内容,但仍然不知道这是正确的选择。

1 个答案:

答案 0 :(得分:3)

你表达了两个"想要"在这个XY Problem(同时)陈述中:

  

我希望EventType在任何其他命名空间中都是不可见的,唯一的   应该能够看到EventType的类是EventManager。

对于第一部分( X ),如注释中所述,无法直接在C#中将对类的访问限制为单个命名空间。如果你创建了internal并在包含该命名空间的程序集中隔离它,你可以得到你想要的东西。

然而,这似乎是一种可疑的做法,当你开始添加代码时,你可能会放弃这种方法。

对于第二部分( Y ),您可以EventType仅对EventManager这是您的真实意图)可见{}}

public class EventManager
{
     private class EventType
     { ... }
}

顺便提一句,朋友的想法来自C ++。