I need to convert from obj:Object to strongly typed object.

I am using the following code and it works fine besides the fact that
it will not work for ArrayCollections

Here is my code which converts from plain object to strongly typed
object:

        public static function objectToInstance( object:Object,
clazz:Class ):*
        {
                var bytes:ByteArray = new ByteArray();

                bytes.objectEncoding = ObjectEncoding.AMF0;

                // Find the objects and byetArray.writeObject them, adding in 
the
                // class configuration variable name -- essentially, we're
constructing
                // and AMF packet here that contains the class information so 
that
                // we can simplly byteArray.readObject the sucker for the
translation

                // Write out the bytes of the original object
                var objBytes:ByteArray = new ByteArray();
                objBytes.objectEncoding = ObjectEncoding.AMF0;
                objBytes.writeObject( object );

                // Register all of the classes so they can be decoded via AMF
                var typeInfo:XML = describeType( clazz );
                var fullyQualifiedName:String =
[EMAIL PROTECTED]().replace( /::/, "." );
                registerClassAlias( fullyQualifiedName, clazz );

                // Write the new object information starting with the class
information
                var len:int = fullyQualifiedName.length;
                bytes.writeByte( 0x10 );  // 0x10 is AMF0 for "typed object 
(class
instance)"
                bytes.writeUTF( fullyQualifiedName );
                // After the class name is set up, write the rest of the object
                bytes.writeBytes( objBytes, 1 );

                // Read in the object with the class property added and return 
that
                bytes.position = 0;

                // This generates some ReferenceErrors of the object being 
passed in
                // has properties that aren't in the class instance, and 
generates
TypeErrors
                // when property values cannot be converted to correct values 
(such
as false
                // being the value, when it needs to be a Date instead).  
However,
these
                // errors are not thrown at runtime (and only appear in trace 
ouput
when
                // debugging), so a try/catch block isn't necessary.  I'm not 
sure
if this
                // classifies as a bug or not... but I wanted to explain why if 
you
debug
                // you might seem some TypeError or ReferenceError items appear.
                var result:* = bytes.readObject();

                return result;
        }

Thanks for Darron Schall for the code.

It works great for all the properties besides ArrayCollection

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to