Я изучаю C # и пришел из мира Java, я был немного озадачен, увидев, что C # не имеет «частного пакета».Большинство комментариев, которые я видел относительно этой суммы: «Вы не можете сделать это; язык не был разработан таким образом».Я также видел некоторые обходные пути, включающие internal
и partial
, а также комментарии, в которых говорилось, что эти обходные пути идут вразрез с дизайном языка.
Почему C # был разработан таким образом?Кроме того, как бы я сделал что-то вроде следующего: у меня есть класс Product
и класс ProductInstance
.Единственный способ, которым я хочу создать ProductInstance
, - это использовать фабричный метод в классе Product
.В Java я бы поместил ProductInstance
в тот же пакет, что и Product
, но сделал бы его конструктор package private
, чтобы только Product
имел к нему доступ.Таким образом, любой, кто хочет создать ProductInstance
, может сделать это только через фабричный метод в классе Product
.Как бы я сделал то же самое в C #?