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

Posted

技术标签:

【中文标题】如何为我的 VB.net 应用程序设置 Protobuf?【英文标题】:How do I set up Protobuf for my VB.net application? 【发布时间】:2012-03-04 17:53:16 【问题描述】:

所以,这对你们来说可能看起来很初级,但我被官方难住了。我正在尝试使用 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 数组只是一个简单的 3 维数组(大约 100x100x2)。数组的每个单元格实际上可能包含也可能不包含一个值 (TiledTerrain),如果不包含,它将包含“Nothing”。

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

感谢您的帮助!

-天才中的白痴:)

【问题讨论】:

【参考方案1】:

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

还有其他选择,注意:

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

但是有一个问题; protobuf-net 目前不支持多维数组。它当然可以添加,但与所有功能一样:在编写之前它不存在。不直接支持的原因是底层 protobuf 规范(由 Google 提供)不支持这一点。如果展平为向量(一维从零开始的数组),它将起作用。如果您需要有关示例的帮助,请告诉我。

【讨论】:

以上是关于如何为我的 VB.net 应用程序设置 Protobuf?的主要内容,如果未能解决你的问题,请参考以下文章

在 vb.net 中使用 .proto 文件

如何为我的网络应用获取类似 Gmail 的文件上传?

如何为我的 API 和我的 websocket 设置路由

vb.net动态设置gridview列的属性

如何为 Linux 设置我的应用程序的桌面图标:KDE、Gnome 等?

如何用vb.net 调用VBS文件?