public ITypeExporter Bind(ExportContext context, Type type)
        {
            if (context == null)
                throw new ArgumentNullException("context");

            if (type == null)
                throw new ArgumentNullException("type");

            foreach (ITypeExporterBinder binder in InnerList)
            {
                ITypeExporter exporter = binder.Bind(context, type);
                
                if (exporter != null)
                    return exporter;
            }
            
            return null;
        }
        public void Export(ExportContext context, JsonWriter writer)
        {
            if (context == null)
                throw new ArgumentNullException("context");

            if (writer == null)
                throw new ArgumentNullException("writer");
            
            writer.WriteNumber(Value);
        }
        /// <summary>
        /// Make an JSON external form string of this JsonArray. For
        /// compactness, no unnecessary whitespace is added.
        /// </summary>
        /// <remarks>
        /// This method assumes that the data structure is acyclical.
        /// </remarks>

        public virtual void Export(ExportContext context, JsonWriter writer)
        {
            if (context == null)
                throw new ArgumentNullException("context");

            if (writer == null)
                throw new ArgumentNullException("writer");
            
            writer.WriteStartArray();

            foreach (object value in this)
                context.Export(value, writer);
            
            writer.WriteEndArray();
        }
        /// <summary>
        /// Make an JSON external form string of this JsonArray. For
        /// compactness, no unnecessary whitespace is added.
        /// </summary>
        /// <remarks>
        /// This method assumes that the data structure is acyclical.
        /// </remarks>

        public override string ToString()
        {
            JsonTextWriter writer = new JsonTextWriter();
            ExportContext context = new ExportContext();
            context.Export(this, writer);
            return writer.ToString();
        }
            protected override void ExportValue(ExportContext context, object value, JsonWriter writer)
            {
                IEnumerable enumerable = (IEnumerable) value;

                ArrayList list = new ArrayList();

                foreach (object item in enumerable)
                    list.Add(item == null ? null : item.ToString());

                writer.WriteString(string.Join(",", (string[]) list.ToArray(typeof(string))));
            }
        public void Export(ExportContext context, JsonWriter writer)
        {
            if (context == null)
                throw new ArgumentNullException("context");

            if (writer == null)
                throw new ArgumentNullException("writer");

            writer.WriteStartObject();
            
            foreach (string name in NameIndexList)
            {
                writer.WriteMember(name);    
                context.Export(InnerHashtable[name], writer);
            }

            writer.WriteEndObject();
        }
 public void Export(ExportContext context, JsonWriter writer)
 {
     throw new NotImplementedException();
 }
 private static void AssertInStock(Type expected, Type type)
 {
     ExportContext context = new ExportContext();
     ITypeExporter importer = context.ExporterBinder.Bind(context, type);
     Assert.IsInstanceOfType(expected, importer, type.FullName);
 }