Ejemplo n.º 1
0
        public void TypelessWriteVectorObject(IList vector)
        {
            if (WriteVectorHeader(vector, (uint)vector.Count, true))
            {
                return;
            }

            // get type of vector element
            Type elementType = vector.GetType().GetGenericArguments()[0];
            // get class info for type
            string alias = Amf3ClassDef.GetAliasFromType(elementType);

            // get alias of vector element from info
            if (alias == null)
            {
                alias = elementType.FullName;
            }
            // write vector element class alias
            TypelessWrite(alias);

            foreach (object i in vector)
            {
                Write(i);
            }
        }
Ejemplo n.º 2
0
        private IAmf3Serializer GetSerializerForType(System.Type type)
        {
            IAmf3Serializer serializer;

            if (!typeToSerializer.TryGetValue(type, out serializer))
            {
                var alias = Amf3ClassDef.GetAliasFromType(type);
                if (alias != null)
                {
                    serializer = Amf3ClassDef.GetSerializerFromAlias(alias);
                    if (serializer == null)
                    {
                        // create reflection serializer
                        serializer = new ReflectionSerializer(alias, type, true, false);
                        // automatically register it
                        Amf3ClassDef.RegisterSerializer(alias, serializer);
                    }
                }
                else
                {
                    // create anonymous serializer
                    serializer = new ReflectionSerializer("*", type, true, false);
                }
                // store serializer in our local cache
                typeToSerializer.Add(type, serializer);
            }
            return(serializer);
        }