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