Beispiel #1
0
            // 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");
                }
            }