PackedDataContainer
Устаревший упакованный ресурс Array/Dictionary с ограниченной поддержкой типов.
Помечен Obsolete в SDK 1.0.0. Для новых бинарных данных используйте ReckfellApi.VarToBytes или FileAccess.StoreVar; для Base64-представления Variant — Marshalls.VariantToBase64. Упаковка этого класса сама по себе не является сжатием данных.
Pack принимает корневой Array или Dictionary, заменяя ранее сохранённое содержимое. Size — число элементов корня, не размер байтов. Новый пустой ресурс ещё не имеет валидного заголовка: сначала Pack корректного контейнера или загрузка готового ресурса; Size до этого диагностируется. Полученные __Data___ — внутренний формат, не JSON и не бинарный Variant для BytesToVar.
Поддержка вложенных типов неполна. Object/RID заменяются nil. В текущей реализации scalar Color не обрабатывается: Pack может вернуть Ok, но чтение элемента даёт ссылку на корневой контейнер вместо Color. Значит, Ok не доказывает сохранность произвольного набора Variant. В этом обзоре дефект воспроизведён, исходники не исправлялись. Циклические и произвольные контейнеры не проверены.
Вложенные Array/Dictionary читаются как PackedDataContainerRef, удерживающие источник и смещение, а не глубокие копии. Не переупаковывайте и не меняйте __Data___ при использовании старых представлений. Прямых C#-индексатора/IEnumerable этот SDK-класс не предоставляет; нативная Variant-индексация проверена через Expression, а не предполагается обычный foreach по обёртке.
Для собственного ресурса используйте Dispose после работы. __Data___ скрыто в SDK и не проверяет произвольные входные байты: не используйте setter как валидатор внешнего файла. Проверены только корректные данные того же runtime и отдельно описанный дефект Color.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
PackedDataContainerКонструктор
public PackedDataContainer();Создаёт собственный устаревший Resource без валидного упакованного корня. До Size/чтения выполните Pack корректного Array/Dictionary. Для новых данных предпочитайте актуальную сериализацию Variant.
Свойства1
__Data___Свойство
public byte[] __Data___ { get; set; }Скрытое внутреннее byte[]-хранилище устаревшего ресурса. Getter возвращает C#-копию; setter копирует байты и длину без проверки полной структуры/смещений. Проверен перенос корректных байтов из того же runtime. Не подавайте внешние/произвольно изменённые данные и не меняйте источник при активных вложенных представлениях.
Методы2
PackError
public Error Pack(Variant value);Заменяет всё содержимое упакованным Array/Dictionary и возвращает Error. Топ-уровень проверяется, произвольные вложенные типы — нет: Object/RID становятся nil, а scalar Color в текущем коде может дать неверную ссылку даже при Ok. Не является сжатием и не проверяет циклический граф. Старые вложенные представления после перепаковки не используйте.
| Имя | Тип | По умолчанию |
|---|---|---|
value | Variant | — |
valueАциклический Array/Dictionary с заранее проверенными поддерживаемыми типами значений. Один лишь Ok не подтверждает сохранность любых вложенных Variant.
ErrorError.Ok при принятом корне, не доказательство сохранности каждого типа; неверный корень диагностируется и возвращает ошибку.
Sizeint
public int Size();Читает число элементов валидного корневого Array/Dictionary, не длину __Data___ в байтах. Новый ресурс без заголовка вызывает диагностику; корректный упакованный пустой контейнер имеет Size=0.
intЧисло элементов, не число байтов; 0 может быть пустым контейнером или диагностическим fallback.