Я часто сталкиваюсь с конфликтами имен между пространством имен и классом внутри этого пространства имен и хотел бы знать, как лучше справляться с этим, когда кажется, что имеет смысл использовать эти имена в первую очередь, помимо добавления случайных префиксов.
Казалось бы, имеет смысл иметь пространство имен Models.Technology с десятками технологических классов (например, технологий Weapon, Agricultural, Recycling) и некоторых связанных с ним интерфейсов. Я также решил иметь класс абстрактных технологий в пространстве имен технологий, из которого все технологии получают.
Однако это заставляет меня использовать такой код:
public Technology.Technology research(Technology.Technology tech) {...}
и аналогичным образом:
public Building.Building build(int count) {...}
Кстати, я не назвал свое пространство имен "Технологии", так как я использую этот термин в другом месте в качестве обертки для списка доступных технологий...