Advanced: Тема повышенной сложности или важная.
Leopotam
> какой-то другой подобный менеджер не поменяет культуру на ту, которая будет ему
> более удобна?
проблема высосана из пальца, наверное оправдывает твой подход переустанавливать ее всегда :)
Leopotam
ответа так и нет :) лан, не важно, там по сути ничего нет - ни строчки кода )
загуглил
ну такое себе решение, перебор в другую сторону, совсем отделен от кода
Leopotam
> Ну если ты не видишь ссылок в README
только его и вижу
Leopotam
этот что ли
https://github.com/Leopotam/simplebinary-cs/blob/master/SimpleBin… Serializer.cs
ну тут совсем мало, нет маппинга
Мапинг через рефлекшн и т.п не нужен, т.к механизм рефлекшна по метаданным есть не во всех языках - все данные для сериализации в схеме, по которой генерится код. По сути сам кодоген и делает тебе мапинг на новые типы, которые ты можешь использовать или напрямую, или копировать дальше. Это именно транспортный формат для бинарной переносимости.
Leopotam
я не вижу где реализация inv.Serialize (ref sbs); или чей это класс, если он стандартный?
Leopotam
> все данные для сериализации в схеме, по которой генерится код
как она подается сериализатору тоже не вижу
Ты вообще читаешь что пишу? Есть кодогенератор, ссылка указана. Он генерит всю обвязку.
Т.е описываешь тип в схеме:
"ClientMapEntry": { "mapId": "u8", "entryId": "u8" },
public struct ClientMapEntry { public const ushort SB_PacketId = 7; public byte MapId; public byte EntryId; public static ClientMapEntry New() { ClientMapEntry v = default; return v; } public void Recycle() { } public static ClientMapEntry Deserialize(ref SimpleBinarySerializer sbs, bool withPacketType = true) { if (withPacketType && sbs.ReadU16() != SB_PacketId) { throw new Exception(); } var v = New(); v.MapId = sbs.ReadU8(); v.EntryId = sbs.ReadU8(); return v; } public void Serialize(ref SimpleBinarySerializer sbs, bool withPacketType = true) { if (withPacketType) { sbs.WriteU16(SB_PacketId); } sbs.WriteU8(MapId); sbs.WriteU8(EntryId); } }
"New()" и "Recycle()" нужны для реализации пулинга в случае вложенных коллекций, в данном типе их просто нет, поэтому методы пустые по сути.
tac
> а можно прямо ответить?
Кодогенерация типа протобуфа, если не знаешь как там сделано - поищи в гугле.
Код на гите там в разных репах для разных языков. Сам кодогенератор на js под ноду.
ага, не успел ответить...
Leopotam
> Прогоняешь генератором
тогда я не вижу его реализацию
seaman
> Сам кодогенератор на js под ноду.
а т.е. на шарпе его нет? ну, ок.. прохожу мимо
но про сам подход я написал
ну такое себе решение, перебор в другую сторону, совсем отделен от кода
он все же лучше чем через аттрибуты, но далек от идеалаЮ, тем более через генерацию кода если ..
Тема закрыта.