2014-01-30 2 views
1

Привет, Я запускаю образец кода из Xamarin на VS2013. Он должен иметь дело с Java Bindings. Я получаю три ошибки при построении, и они все о непоследовательной доступности.Непоследовательная ошибка базового класса доступности:

Противоречивая доступность: базовый класс «Org.Osmdroid.Tileprovider.Modules.MapTileModuleProviderBase.TileLoader» является менее доступной, чем класс

Других ошибок «Org.Osmdroid.Tileprovider.Modules.MapTileDownloader.TileLoader» являются одинаковыми кроме последней строки - другой класс.

Заранее благодарен!

+1

Какая часть сообщения об ошибке вы не понимаете? http://msdn.microsoft.com/en-us/library/wxh6fsc7.aspx – SLaks

+1

Похоже, вы пытаетесь связать OSMDroid? Здесь приведен пример: https://github.com/xamarin/monodroid-samples/tree/master/OsmDroidBindingExample (обратите внимание, что это не связано с самой последней версией OSMDroid) –

ответ

2

Доступность может быть затянута только не ослабла, так что с вершины иерархии наследования на дне только эти изменения разрешены:

общественность -> защищенного

защищен -> частная

Очевидно, что class не может быть private. Но есть также модификатор доступа internal, который удаляет определение класса из манифеста сборки, тем самым предоставляя пользователю более чистый API.

Чтобы устранить эту проблему, необходимо присвоить класс

Org.Osmdroid.Tileprovider.Modules.MapTileDownloader.TileLoader   (say D) 

модификатор доступа, который МИНИМУМ туго, как и

Org.Osmdroid.Tileprovider.Modules.MapTileModuleProviderBase.TileLoader (say P) 

Если P внутренняя, D должна быть внутренний тоже. Если P является общедоступным, D может быть внутренним или государственным.

+0

Итак, по существу я должен изменить все вхождения публичный для частного лица? Если это так, ошибки все еще существуют. – user2402616

+0

Нет, пожалуйста, прочтите мой отредактированный ответ выше. – pid

+0

Теперь он работает, спасибо! – user2402616

4

Вам нужно будет изменить Metadata.xml в библиотеке привязки. Попробуйте, если это позаботится о первой проблеме:

<attr path="/api/package[@name='org.osmdroid.tileprovider.modules']/class[@name='MapTileModuleProviderBase.TileLoader']" name="visibility">public</attr> 
+0

Добавление этого тега привело к значительному количеству ошибок. – user2402616

+0

@ user2402616: Это действительно хорошо, это означает, что предыдущие ошибки исправлены, вы видите проблемы, которые были затенены вашей первоначальной проблемой. В некоторых случаях привязка является болезненным длительным трудом. В прошлый раз, когда я закончил привязку AAR, я закончил файл metadata.xml длиной в 98 строк. Так что соберите все свое терпение и продолжайте идти – Chepech

Смежные вопросы