public override void Init(ArkArchive archive, ArkName name) { base.Init(archive, name); ArkName arrayType = archive.ReadName(); long position = archive.Position; try { Value = ArkArrayRegistry.ReadBinary(archive, arrayType, this); if (Value == null) { throw new UnreadablePropertyException("ArkArrayRegistry returned null"); } } catch (UnreadablePropertyException upe) { archive.Position = position; Value = new ArkArrayUnknown(archive, DataSize, arrayType); archive.HasUnknownNames = true; Debug.WriteLine($"Reading ArrayProperty of type {arrayType} with name {name} as byte blob because:"); Debug.WriteLine(upe.Message); Debug.WriteLine(upe.StackTrace); } }
public override void Init(JObject node) { base.Init(node); ArkName arrayType = ArkName.From(node.Value <string>("arrayType")); try { node["value"].ToObject <byte[]>(); Value = new ArkArrayUnknown(node["value"], arrayType); } catch (Exception ex) when(ex is FormatException || ex is OverflowException || ex is JsonReaderException) { Value = ArkArrayRegistry.ReadJson(node.Value <JArray>("value"), arrayType, this); } }