Вы выразили два "желания" в этом XY Проблема (одновременно):
Я хочу, чтобы EventType был невидимым в любом другом пространстве имен, единственный класскто должен видеть EventType - это EventManager.
Для первой части ( X ), как упоминалось в комментариях, нет способа ограничить доступ к классутолько одно пространство имен непосредственно в C #.Вы можете получить то, что хотите, если вы сделаете его internal
и изолируете его в сборке, содержащей только это пространство имен.
Однако это кажется сомнительной практикой, и по ходуо добавлении кода вы, вероятно, откажетесь от этого подхода.
Для второй части ( Y ) вы можете сделать EventType
видимым только для EventManager
( thisэто ваше истинное намерение ) вот так
public class EventManager
{
private class EventType
{ ... }
}
Кстати, идея друга пришла из C ++.