Example #1
0
        // X:\jsc.svn\core\ScriptCoreLib\JavaScript\BCLImplementation\System\Runtime\Serialization\FormatterServices.cs

        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IApp page)
        {
            var o = new xFoo();

            Console.WriteLine(new { o });

            //var x = typeof(o);
            var x = o.GetType();

            Console.WriteLine("GetUninitializedObject");

            // sometime later
            var oo = FormatterServices.GetUninitializedObject(x);

            //var isFoo = oo as xFoo;
            var isFoo = oo is xFoo;

            // Uncaught TypeError: Cannot read property 'LgEABvEJMzKFrGX3QxjvzA' of null

            var om = FormatterServices.GetSerializableMembers(x);
            var ov = FormatterServices.GetObjectData(o, om);

            FormatterServices.PopulateObjectMembers(oo, om, ov);

            // 0:34ms {{ isFoo = true, oo = xFoo: {{ xField1 = field1 {{ Counter = 1 }} }} }}
            // 0:80ms {{ isFoo = true, oo = xFoo: {{ xField1 = null }} }}
            // do we still see ToString?
            Console.WriteLine(new { isFoo, oo });
        }
        // X:\jsc.svn\core\ScriptCoreLib\JavaScript\BCLImplementation\System\Runtime\Serialization\FormatterServices.cs

        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IApp page)
        {
            var o = new xFoo();
            Console.WriteLine(new { o });

            //var x = typeof(o);
            var x = o.GetType();

            Console.WriteLine("GetUninitializedObject");

            // sometime later
            var oo = FormatterServices.GetUninitializedObject(x);

            //var isFoo = oo as xFoo;
            var isFoo = oo is xFoo;

            // Uncaught TypeError: Cannot read property 'LgEABvEJMzKFrGX3QxjvzA' of null 

            var om = FormatterServices.GetSerializableMembers(x);
            var ov = FormatterServices.GetObjectData(o, om);

            FormatterServices.PopulateObjectMembers(oo, om, ov);

            // 0:34ms {{ isFoo = true, oo = xFoo: {{ xField1 = field1 {{ Counter = 1 }} }} }}
            // 0:80ms {{ isFoo = true, oo = xFoo: {{ xField1 = null }} }}
            // do we still see ToString?
            Console.WriteLine(new { isFoo, oo });


        }