Пространства имен связки C # - PullRequest
0 голосов
/ 28 августа 2018

Я написал C # -Solution, который включает в себя много разных проектов. Поскольку это решение действует как бэкэнд, я бы хотел написать API для него. Проблема в том, что существует относительно большое количество пространств имен, которые клиент должен был бы добавить, чтобы получить доступ к необходимым интерфейсам и классам. Есть ли способ «связать» пространства имен в одно пространство имен (или, по крайней мере, меньшее количество пространств имен), чтобы клиенту не приходилось добавлять столько директив using или мне нужно полностью реструктурировать свой бэкэнд?

Большое спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

Если вы имеете в виду создание приложения ASP.NET WebApi, то пространства имен не должны иметь значения. Любое приложение-потребитель получит данные в виде JSON без пространств имен.

Вы можете рассмотреть возможность использования такого инструмента, как Swagger , который действует как кроссплатформенный инструмент API для автоматического документирования. С точки зрения .net есть две популярные библиотеки NSwag и Swashbuckle , которые помогут вам начать работу. NSwag также включает инструменты для создания клиентских классов, проверяя файл swagger.json, как старые определения WSDL.

Пока ваши объекты JSON имеют одинаковые имена свойств, любой клиент с радостью десериализует их в свои классы пространств имен.

Другой вариант, который может быть чище, если вы используете этот API только для внутреннего использования, - это воспроизвести все классы, которые вы хотите вывести через API, в отдельной библиотеке классов. API отвечает за сопоставление существующих пространств имен / классов и новых. Такие инструменты, как Automapper , могут сильно помочь в этом. У него есть дополнительное преимущество, заключающееся в том, что вы можете настроить отображение так, чтобы только точно данные, которые требуются, передавались API, а все посторонние данные - нет.

Эта библиотека классов может затем использоваться совместно приложениями в качестве ссылки на проект, dll или (лучше всего, если вы правильно настроили) пакета NuGet.

...