c# - C# 使类对除自己的命名空间之外的所有命名空间不可见
问题描述
假设我有命名空间Events
,它只包含类EventManager
和EventType
.
我希望EventType
在任何其他命名空间中不可见,唯一应该能够看到的类EventType
是EventManager
.
我怎样才能做到这一点?我读了一些关于Friend
但仍然不知道这是正确的选择。
解决方案
您在此XY 问题(同时)声明中表达了两个“想要” :
我希望 EventType 在任何其他命名空间中不可见,唯一应该能够看到 EventType 的类是 EventManager。
对于第一部分(X),如评论中所述,无法直接在 C# 中将对类的访问限制为仅单个命名空间。internal
如果您制作它并将其隔离在仅包含该名称空间的程序集中,您可以获得您想要的东西。
然而,这似乎是一种可疑的做法,当您开始添加代码时,您可能最终会放弃这种方法。
对于第二部分(Y),您只能像这样使(这是您的真实意图)EventType
可见EventManager
public class EventManager
{
private class EventType
{ ... }
}
顺便说一句,朋友的想法来自C++。
推荐阅读
- python-3.x - Jupyter notebook:500:不允许代理
- java - 如何显示用户插入的指数函数的展开形式?
- django - django rest框架动态url路由
- html - 对 html 标签中的每个元素应用效果,除了一个元素(ID/类)
- git - 在 master 上的先前版本上提交更改
- outlook - 无法在运行 iOS 13 的设备中通过 UIActivityViewController 打开 Outlook 应用程序
- javascript - 如何重新启动函数以更改变量
- spring - Spring Cloud Kubernetes:无法将机密传递到 application_properties.yaml
- c++ - 处理标志的首选方法是什么?
- c# - ASP.NET 中的 MVC 和实体框架有什么区别?