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); } }
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); }