Связь двух неймспейсов

Связь нескольких проектов с использованием пространства имен «namespace»

Применяется при необходимости связывать между собой 2 проекта и разворачивать их на одной платформе, с указанием ссылок и коллекций не только внутри проекта, но и на другие, развернутые в этом же контексте. Реализуется с применением пространства имен проекта, т.е. что бы было понятно к какому проекту относятся классы по ссылке. Так, например, связываем тестовый проект develop-and-test с проектом fias:

Пример

{
  "namespace": "develop-and-test",
  "code": "projectJoin.addressExt",
  "orderNumber": 0,
  "type": 1,
  "title": "",
  "caption": "Адрес ФИАС",
  "classname": "address@fias",
  "container": null,
  "collection": null,
  "url": null,
  "hint": null,
  "conditions": [],
  "sorting": [],
  "pathChains": [],
  "metaVersion": "2.0.61.21119"
}

В меню проекта develop-and-test есть узел навигации, который является представлением класса из проекта fias. Таким образом при переходе по пункту меню одного проекта - получаем данные из другого проекта, при указании необходимого пространства имен.

Описание

Для меты:

При импорте неймспейс берется не из параметра, а из меты класса. Убираем неймспейс как параметр навигации и т.д.

При импорте меты навигации, при совпадении системных имен приоритет имеет мета, накатываемая последней, но с учетом заполненности атрибутов. т.е. пустое значение атрибута не переопределяет непустое.

Для студии:

В мете класса добавляется свойство namespace. В студии в настройках проекта ION добавлен параметр - «пространство имен». Это пространство имен по умолчанию проставляется в соответствующее поле на форме создания класса.

Для атрибута «пространство имен» также заданы отдельные поля на формах создания и редактирования класса. В студии теперь системное имя класса везде отображается с неймспейсом через знак @, если класс объявлен в неймспейсе отличном от неймспейса текущего проекта.

Поле неймспейса в виде выпадающего списка, откуда можно выбрать либо неймспейс проекта, либо неймспейсы связанных проектов (Project references). При этом есть возможность и вбить его руками.

У остальных объектов меты неймспейса нет, но ссылки на классы везде должны проставляться с учетом неймспейса (в ссылочных атрибутах тоже). Это значит, что в списках выбора классов должно быть полное имя класса с неймспейсом.

Также в списки выбора классов должны попадать классы из всех Project References. На физическом уровне неймспейс включается в имя файла меты класса (и директорий, если они участвуют в формировании логики привязки к классу, например, у меты представления).