gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:59:08 25 4
gpt4 key购买 nike

假设我有命名空间 Events ,其中仅包含类 EventManagerEventType .

我要 EventType要在任何其他命名空间中不可见,唯一应该能够看到的类 EventTypeEventManager .

我怎样才能做到这一点?我读了一些关于 Friend 的信息但仍然不知道这是正确的选择。

最佳答案

你在这个XY Problem中表达了两个“想要” (同时)声明:

I want EventType to be invisible in any other namespace, the only class who should be able to see EventType is EventManager.



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

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

对于第二部分( Y ),您可以制作 EventType仅对 EventManager 可见(这是你的真实意图)像这样
public class EventManager
{
private class EventType
{ ... }
}

顺便说一下, friend 的想法来自C++。

关于C# 使类对它自己以外的所有命名空间不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50354843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com