У меня есть class Foo
в проекте библиотеки, который я бы хотел предотвратить в моем проекте приложения. Я перерабатываю свое приложение, чтобы не использовать class Foo
, но я должен сделать это постепенно. Class Foo
используется в библиотеке, поэтому исключение файла не является приемлемым ответом. Итак, как я могу сделать свое приложение слепым до class Foo
? Также обратите внимание, что я не могу сделать это internal
, потому что другим библиотекам нужно class Foo
.Как я могу сделать класс «общедоступным, кроме» этой сборки?
ответ
К сожалению, этот ответ не позволяет 'class Foo' использоваться другими библиотеками. Если этот класс использовался только в собственной сборке, тогда он работает. –
Также защищенный внутренний не работает с элементами пространства имен, такими как класс и интерфейс. –
Вы можете сделать копию вашей библиотеки и в том, что изменить Foo
модификатор класса к внутренней. после его создания замените старую ссылку на эту новую и сохраните другие ссылки на проекты старой библиотеки.
Я рекомендую это решение для временного обслуживания.
- 1. Могу ли я сделать сеанс браузера общедоступным?
- 2. Как сделать arraylist общедоступным
- 3. Сделать способ общедоступным для конфигурации сборки UNITTESTS
- 4. Как я могу скрыть «сеттеры» от всех, кроме одной сборки?
- 5. Как сделать java.lang.Object.clone общедоступным?
- 6. Сделать общедоступным членский опрос
- 7. Как сделать Apache Server общедоступным?
- 8. Как я могу сделать код смены сборки?
- 9. Я не понимаю, почему класс является «общедоступным»
- 10. Как сделать список классов общедоступным?
- 11. Как сделать объект общедоступным?
- 12. Как я могу использовать сторонний «класс Amazon S3 PHP», чтобы сделать каждый файл в ведре общедоступным?
- 13. Почему я не могу объявить класс obj общедоступным?
- 14. Могу ли я сделать андроид офлайн распознавания голоса общедоступным?
- 15. Почему я могу сделать защищенный метод общедоступным в преемнике?
- 16. Как сделать код nodeJS общедоступным
- 17. Как сделать приложение Docker общедоступным
- 18. Как сделать сервер Apache общедоступным
- 19. Как я могу сделать класс в массив?
- 20. В Visual C# я не могу сделать свой публичный класс общедоступным
- 21. Сделать класс невидимым вне сборки
- 22. Как сделать сервис bluetooth общедоступным?
- 23. Как сделать массив ярлыков общедоступным
- 24. Как сделать сервер django общедоступным в rasb?
- 25. Как сделать приватный метод общедоступным методом
- 26. Сделать репозиторий SVN общедоступным
- 27. Как я могу сделать вывод этой формы в массив?
- 28. Как я могу сделать замену переменных в этой строке
- 29. как я могу сделать поверочный элемент в этой строке PHP
- 30. Android Как я могу сделать градиент этой EditText
Сколько точек входа имеет эта библиотека? Вы можете добавить свой собственный проект-оболочку, который действует как декоратор и перехватывает любые вызовы public Foo и, например, возвращает исключение. – KingCronus
[InternalsVisibleToAttribute] (https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute (v = vs.110) .aspx) может помочь – Rhumborl
Не существует механизма, позволяющего классу использоваться во всех библиотеках _специфически. Вы можете использовать 'InternalsVisibleTo', чтобы сделать внутренний класс видимым для _specific_ библиотек, но это похоже на то, что вы не хотите. Я думаю, что статический анализ кода (или поиск) - ваш лучший выбор. Невозможно «предотвратить» его. –