Связь двух неймспейсов¶
Связь нескольких проектов с использованием пространства имен «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. На физическом уровне неймспейс включается в имя файла меты класса (и директорий, если они участвуют в формировании логики привязки к классу, например, у меты представления).