我正在学习C#,来自Java世界,有点困惑的是C#没有"package private"。大多数评论都是"你不能这样做;这个语言不是这样设计的"。我还看到了一些解决方法,包括internal
和partial
,还有注释说这些解决方法违反了语言的设计。
C#为什么会被设计成这样?另外,如果我想做以下操作:我有一个Product
类和一个ProductInstance
类。我只想通过Product
类中的工厂方法创建ProductInstance
对象。在Java中,我会将ProductInstance
放在与Product
相同的包中,但使用package private
构造函数,以使只有Product
类才能访问它。这样,任何想要创建ProductInstance
对象的人都只能通过Product
类中的工厂方法来创建。我该如何在C#中实现相同的功能?
friend
关键字)使用时,将其设置为internal
是一种很大的代码异味。我不希望将我的应用程序拆分成数百个dll来防止异味访问,也不喜欢将我的详细实现公开(基本上对整个dev团队公开)。我应该编写具有十个子类的巨型类以克服这个限制吗? - PPC