// amf0 object object ReadObject() { var type = b.ReadUtf(); if (context.HasConcreteType(type)) { var instance = context.CreateInstance(type); var klass = context.GetClassInfo(instance); refs.Add(instance); foreach (var pair in ReadItems()) { if (klass.TryGetMember(pair.key, out var member)) { member.SetValue(instance, pair.value); } } return(instance); } else if (context.AsObjectFallback) { // object reference added in this.ReadAmf0AsObject() var obj = ReadAsObject(); obj.TypeName = type; return(obj); } else { throw new ArgumentException($"can't deserialize object: the type \"{type}\" isn't registered, and anonymous object fallback has been disabled"); } }