internal void Export(Coherent.UI.Binding.Exporter exporter)
        {
            switch (Type)
            {
            case ValueType.Null: exporter.Export(this.ActualValue);
                break;

            case ValueType.Boolean: exporter.Export((bool)this.ActualValue);
                break;

            case ValueType.Integer: exporter.Export((int)this.ActualValue);
                break;

            case ValueType.UInteger: exporter.Export((uint)this.ActualValue);
                break;

            case ValueType.SByte: exporter.Export((sbyte)this.ActualValue);
                break;

            case ValueType.Byte: exporter.Export((byte)this.ActualValue);
                break;

            case ValueType.Number: exporter.Export((double)this.ActualValue);
                break;

            case ValueType.String: exporter.Export((string)this.ActualValue);
                break;

            case ValueType.Array: exporter.Export((Value[])this.ActualValue);
                break;

            case ValueType.Object: exporter.Export(((ValueObject)this.ActualValue).Properties);
                break;
            }
        }
		internal void Export(Exporter exporter, object value)
		{
			exporter.Blob.BeginSequence(Coherent.UI.Mobile.Binding.ValueType.Object, Getters.Length + 1);
			exporter.Export("__Type");
			exporter.Export(RealTypeName);
			for (var i = 0; i < Getters.Length; ++i)
			{
				exporter.Export(Names[i]);
				Getters[i](value, exporter);
			}
			exporter.Blob.EndSequence();
		}
		private static void ExportByte(Exporter exporter, object value)
		{
			exporter.Blob.Write((byte)value);
		}
		private static void ExportBool(Exporter exporter, object value)
		{
			exporter.Blob.Write((bool)value);
		}
		private static void ExportUInt(Exporter exporter, object value)
		{
			exporter.Blob.Write((uint)value);
		}
		private static void ExportIList(Exporter exporter, object list)
		{
			var realList = (System.Collections.IList)list;
			exporter.Blob.BeginSequence(Coherent.UI.Mobile.Binding.ValueType.Array, realList.Count);
			foreach (var e in realList)
			{
				exporter.Export(e);
			}
			exporter.Blob.EndSequence();
		}
		private static void ExportIDictionary(Exporter exporter, object dict)
		{
			var realDict = (System.Collections.IDictionary)dict;
			exporter.Blob.BeginSequence(Coherent.UI.Mobile.Binding.ValueType.Object, realDict.Count);
			foreach (System.Collections.DictionaryEntry item in realDict)
			{
				exporter.Export(item.Key);
				exporter.Export(item.Value);
			}
			exporter.Blob.EndSequence();
		}
 private static void ExportBool(Exporter exporter, object value)
 {
     exporter.Blob.Write((bool)value);
 }
		private static void ExportArray(Exporter ex, object array)
		{
			var realArray = (Array)array;
			ex.Blob.BeginSequence(Coherent.UI.Mobile.Binding.ValueType.Array, realArray.LongLength);
			foreach (var e in realArray)
			{
				ex.Export(e);
			}
			ex.Blob.EndSequence();
		}
        private static void ExportValue(Exporter exporter, object value)
        {
            var realValue = (Coherent.UI.Mobile.Binding.Value)value;

            realValue.Export(exporter);
        }
		private static void ExportString(Exporter exporter, object value)
		{
			exporter.Blob.Write((string)value);
		}
 private static void ExportDouble(Exporter exporter, object value)
 {
     exporter.Blob.Write((double)value);
 }
 private static void ExportString(Exporter exporter, object value)
 {
     exporter.Blob.Write((string)value);
 }
 private static void ExportFloat(Exporter exporter, object value)
 {
     exporter.Blob.Write((float)value);
 }
 private static void ExportByte(Exporter exporter, object value)
 {
     exporter.Blob.Write((byte)value);
 }
 private static void ExportUInt(Exporter exporter, object value)
 {
     exporter.Blob.Write((uint)value);
 }
		private static void ExportFloat(Exporter exporter, object value)
		{
			exporter.Blob.Write((float)value);
		}
 internal Exporter GetExporter()
 {
     Exporter.ResetData();
     return(Exporter);
 }
		private static void ExportDouble(Exporter exporter, object value)
		{
			exporter.Blob.Write((double)value);
		}
 internal static void ExportObject(Exporter exporter, object value)
 {
     exporter.ExecuteExporter(value, value.GetType());
 }
		private static void ExportValue(Exporter exporter, object value)
		{
			var realValue = (Coherent.UI.Mobile.Binding.Value)value;
			realValue.Export(exporter);
		}
		internal static void ExportObject(Exporter exporter, object value)
		{
			exporter.ExecuteExporter(value, value.GetType());
		}