如何为我的VB.net应用程序设置Protobuf?

时间:2012-03-04 17:53:17

标签: vb.net arrays protobuf-net save

所以,这对你们来说可能看起来很简单,但我正式感到难过。我试图将我的应用程序中的一些数据保存到一个文件使用protobuf(由一些同行建议给我)但我似乎无法找到它的任何文档和我能找到的总是给我一些奇怪的错误。我有一个声明如下的数组:

Private Terrain(,,) As TiledTerrain

TiledTerrain类看起来像这样:

Public Class TiledTerrain

    Public X As Integer
    Public Y As Integer

    Public Texture_X As Integer
    Public Texture_Y As Integer

End Class

漂亮的狗 - 简单吧?好吧,我似乎无法弄清楚如何使用Protobuf将Terrain数组保存到文件中?

Terrain数组只是一个简单的三维数组(大约100x100x2)。数组的每个单元格实际上可能包含或不包含值(TiledTerrain),如果不包含,则它将包含“Nothing”。

任何人都可以向我解释我应该如何做到这一点?我目前引用了protobuf-net.dllprotobuf-net.Extensions.dll,因为我真的不知道使用哪个...

感谢您的帮助!

- 天才中的一个天才:)

1 个答案:

答案 0 :(得分:2)

首先阅读Getting Started,其中描述了使用属性的最简单方案。 VB的属性语法略有不同,你可能比我更熟悉 - 但概念是相同的。

还有其他选择,请注意:

  • 在v2中,如果需要,可以在运行时将整个模型配置为完整,而无需任何属性
  • 如果类型看起来像一个明显的“元组”(重要的是,一个构造函数接受一个匹配每个公共成员的参数),它将使用构造函数顺序来推断合同

但是有一个问题; protobuf-net目前不支持多维数组。它当然可以添加,但与所有功能一样:它在写入之前不存在。不直接支持的原因是底层的protobuf规范(由谷歌)不支持这一点。如果扁平化为矢量(1维零基数组),它将起作用。如果您需要帮助,请告诉我。