Как мне настроить Protobuf для моего приложения VB.net? - PullRequest
1 голос
/ 04 марта 2012

Итак, это может показаться очень элементарным для вас, ребята, но я официально озадачен.Я пытаюсь сохранить некоторые данные в моем приложении в файл, используя 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

Довольно просто, правда?Ну, я не могу понять, как сохранить мой массив Terrain в файл, используя Protobuf?

Массив Terrain - это простой трехмерный массив (размером около 100x100x2).Каждая ячейка массива может на самом деле содержать или не содержать значение (TiledTerrain), а если нет, оно будет содержать "Nothing".

Может кто-нибудь объяснить мне полностью, как я долженидти делать это?В настоящее время я ссылаюсь на protobuf-net.dll и protobuf-net.Extensions.dll, потому что я действительно не знаю, что использовать ...

Спасибо за любую помощь!

-А Морон среди гениев:)

1 Ответ

2 голосов
/ 04 марта 2012

первое чтение Начало работы , которое описывает простейший сценарий с использованием атрибутов. У VB немного другой синтаксис для атрибутов, с которым вы, вероятно, более знакомы, чем я, - но концепция та же.

Есть альтернативы, примечание:

  • в v2 модель может быть настроена полностью во время выполнения, если вы хотите, без необходимости каких-либо атрибутов
  • если тип выглядит как очевидный «кортеж» (включая, что важно, конструктор, который принимает параметр, соответствующий каждому общедоступному члену), он будет использовать порядок конструктора для вывода контракта

Хотя есть проблема; Protobuf-net в настоящее время не поддерживает многомерные массивы. Конечно, его можно добавить, но, как и во всех других функциях: он не существует, пока не будет записан. Причина, по которой это не поддерживается напрямую, заключается в том, что базовая спецификация protobuf (от Google) не поддерживает это. Это будет работать, если сплющить в вектор (1-мерный массив на основе нуля). Если вам нужна помощь с примером, дайте мне знать.

...