jb.*_*jb. 8 c# class-design access-modifiers
我有两个对象,RoomManager并且Room会有几个Room和一个RoomManager.我希望它RoomManager是唯一一个允许创建Room对象的人.所以我想知道是否有一种方法可以使Room构造函数(以及其余的Room方法/属性)只能访问RoomManager.我在考虑将它们移动到自己的命名空间并制作Room私有或内部或其他东西.从可访问性级别(C#参考)我看到内部是针对整个程序集,而不仅仅是命名空间.
不,C#(和一般的.NET)没有特定于命名空间的访问修饰符.
一个相当黑客的解决方案是让Room只有一个私有构造函数,并使RoomManager成为一个嵌套类(可能只是名为Manager):
public class Room
{
private Room() {}
public class Manager
{
public Room CreateRoom()
{
return new Room(); // And do other stuff, presumably
}
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
Room.Manager manager = new Room.Manager();
Room room = manager.CreateRoom();
Run Code Online (Sandbox Code Playgroud)
正如我所说的那样,虽然有点hacky.当然,您可以将Room和RoomManager放在自己的程序集中.
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |