gpt4 book ai didi

C# 将类实例的创建限制在命名空间内

转载 作者:太空狗 更新时间:2023-10-29 18:20:59 26 4
gpt4 key购买 nike

我有两个对象,RoomManagerRoom , 会有几个 Room s和一个RoomManager .我想要 RoomManager成为唯一一个被允许创建 Room 的人目的。所以我想知道是否有办法制作 Room构造函数(以及其余 Room 方法/属性)只能由 RoomManager 访问.我在想也许将它们移动到自己的命名空间并制作 Room私有(private)或内部或其他东西。来自 Accessibility Levels (C# Reference)我看到 internal 是针对整个程序集的,而不仅仅是命名空间。

最佳答案

不,C#(和一般的 .NET)没有特定于命名空间的访问修饰符。

一个相当 hack 的解决方案是让 Room 只拥有一个私有(private)构造函数,并使 RoomManager 成为一个嵌套类(可能只是称为 Manager):

public class Room
{
private Room() {}

public class Manager
{
public Room CreateRoom()
{
return new Room(); // And do other stuff, presumably
}
}
}

像这样使用它:

Room.Manager manager = new Room.Manager();
Room room = manager.CreateRoom();

正如我所说,这有点老套。当然,您可以将 Room 和 RoomManager 放在它们自己的程序集中。

关于C# 将类实例的创建限制在命名空间内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645607/

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