【问题标题】:Inconsistent Accessibility base class error不一致的可访问性基类错误
【发布时间】:2014-01-30 22:26:11
【问题描述】:

您好,我正在 VS2013 上运行来自 Xamarin 的示例代码。它必须处理 Java 绑定。我在构建时遇到了三个错误,它们都是关于可访问性不一致的。

可访问性不一致:基类“Org.Osmdroid.Tileprovider.Modules.MapTileModuleProviderBase.TileLoader”的可访问性低于类“Org.Osmdroid.Tileprovider.Modules.MapTileDownloader.TileLoader”

除了最后一行是不同的类之外,其他错误是相同的。

提前致谢!

【问题讨论】:

标签: c# java android visual-studio xamarin


【解决方案1】:

您需要修改绑定库上的 Metadata.xml。试试这是否能解决第一个问题:

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

【讨论】:

  • @user2402616:这实际上是一件好事,这意味着以前的错误已修复,您会看到最初的问题所掩盖的问题。在某些情况下,装订是一项痛苦的长期劳动。上次完成 AAR 绑定时,我得到了一个 98 行长的 metadata.xml 文件。所以收集你所有的耐心并继续前进
【解决方案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 可能是内部的或公开的。

【讨论】:

  • 所以基本上我应该将所有出现的公共更改为私人?如果是这样,错误仍然存​​在。
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2013-05-15
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多