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