object ConvertObject(IJsonConverter converter, object value, Type sourceType)
        {
            var rt = converter.GetReversiveType(new JsonItem(String.Empty, value, false));

            if (value != null && rt != null && sourceType.Equals(value.GetType()) == false)
            {
                var c  = _manager.GetSerializationInfo(rt);
                var jt = Reflection.GetJsonDataType(rt);
                if (jt != JsonDataType.Undefined)
                {
                    value = c.DeserializeMethod(this, value, c);
                }
                else if (value is JsonDict)
                {
                    value = CreateObject((JsonDict)value, c, null);
                }
            }
            return(converter.DeserializationConvert(value));
        }
        void ConvertObject(IJsonConverter converter, JsonItem ji, Type sourceType)
        {
            var rt = converter.GetReversiveType(ji);
            var xv = ji._Value;

            if (xv != null && rt != null && sourceType.Equals(xv.GetType()) == false)
            {
                var c  = _manager.GetReflectionCache(rt);
                var jt = Reflection.GetJsonDataType(rt);
                if (jt != JsonDataType.Undefined)
                {
                    xv = c.DeserializeMethod(this, xv, c);
                }
                else if (xv is JsonDict)
                {
                    xv = CreateObject((JsonDict)xv, c, null);
                }
            }
            ji._Value = xv;
            converter.DeserializationConvert(ji);
        }