No, C # (and .NET in general) does not have namespace specific access modifiers.
One of the rather hacky solutions would be to have Room only have a private constructor and make RoomManager a nested class (possibly just called by the manager):
public class Room { private Room() {} public class Manager { public Room CreateRoom() { return new Room();
Use it as follows:
Room.Manager manager = new Room.Manager(); Room room = manager.CreateRoom();
As I said, this is a bit of hacks. Of course, you could put Room and RoomManager in your own assembly.
Jon skeet
source share