假设我有名称空间Events
,其中只包含类EventManager
和EventType
。
我希望EventType
在任何其他名称空间中不可见,唯一应该能够看到EventType
的类是EventManager
。
我该怎么做?我读过有关Friend
的内容,但仍然不知道这是正确的选择。
答案 0 :(得分:3)
你表达了两个"想要"在这个XY Problem(同时)陈述中:
我希望EventType在任何其他命名空间中都是不可见的,唯一的 应该能够看到EventType的类是EventManager。
对于第一部分( X ),如注释中所述,无法直接在C#中将对类的访问限制为单个命名空间。如果你创建了internal
并在包含仅该命名空间的程序集中隔离它,你可以得到你想要的东西。
然而,这似乎是一种可疑的做法,当你开始添加代码时,你可能会放弃这种方法。
对于第二部分( Y ),您可以EventType
仅对EventManager
(这是您的真实意图)可见{}}
public class EventManager
{
private class EventType
{ ... }
}
顺便提一句,朋友的想法来自C ++。