Я разрабатываю продукт с кучей взаимосвязанных частей (сервер, клиент, библиотеки и т. Д.), И одна из частей - это крошечная библиотека, которую пользователи будут связывать в свой собственный код на стороне клиента (что-то вроде Flickr API или Google Maps API). Как только они включили эту библиотеку, все взаимосвязанные биты волшебным образом сцепляются друг с другом. Так что простота API - это важная и важная задача.
API, который я предоставляю пользователям, состоит из двух классов и семи открытых методов. Легкая гороховая, лимонно-отжимная.
Но простота - тщательно продуманная иллюзия. Библиотека, которую я распространяю, на самом деле зависит от другой библиотеки, имеющей 136 собственных классов (и более тысячи открытых методов). В процессе сборки я связываю две библиотеки в один конечный результат для упрощения интеграции и развертывания потребителем API.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не хочу, чтобы конечный пользователь (разработчик приложений, интегрирующий мое программное обеспечение для улучшения своей собственной функциональности) когда-либо беспокоился обо всех этих дополнительных затратах, тонущих в потоке ненужной сложности. .
Снаружи библиотека должна выглядеть так, как будто она содержит ровно два открытых класса, с ровно семью открытыми методами.
Как вы справляетесь с подобными вещами в своих собственных проектах? Меня интересуют независимые от языка решения, а также различные методы для разных языков, компиляторы и инструменты сборки.
В моем конкретном случае я разрабатываю для флеш-платформы (AIR / Flex / Actionscript) файлы библиотеки SWC. Методология сборки аналогична платформе Java, где все классы объединены в модуль с заархивированным кодом с одинаковой видимостью (SWC-файл Actionscript, концептуально, практически идентичен Java JAR-файлу).
Разве .NET не имеет "внутреннего" модификатора для классов и методов? Это именно то, что я ищу, и если кто-нибудь знает хитрую технику, чтобы скрыть видимость классов между границами SWC, я бы хотел это услышать.