コード例 #1
0
 private CfrV8Value CreateV8Value(object value)
 {
     if (value is bool)
     {
         return(CfrV8Value.CreateBool((bool)value));
     }
     else if (value is DateTime)
     {
         return(CfrV8Value.CreateDate(CfrTime.FromUniversalTime((DateTime)value)));
     }
     else if (value is double)
     {
         return(CfrV8Value.CreateDouble((double)value));
     }
     else if (value is int)
     {
         return(CfrV8Value.CreateInt((int)value));
     }
     else if (value is uint)
     {
         return(CfrV8Value.CreateUint((uint)value));
     }
     else if (value is string)
     {
         return(CfrV8Value.CreateString((string)value));
     }
     else if (value == null)
     {
         return(CfrV8Value.CreateUndefined());
     }
     else
     {
         throw new ArgumentException($"Type \"{ value.GetType().Name }\" is not supported.");
     }
 }
コード例 #2
0
        private static CfrV8Value ClrToV8Value(object clrValue)
        {
            var type = clrValue.GetType();

            var typeCode = Type.GetTypeCode(type);

            CfrV8Value value = null;


            switch (typeCode)
            {
            case TypeCode.Boolean:
                value = CfrV8Value.CreateBool((bool)clrValue);
                break;

            case TypeCode.Int16:
            case TypeCode.Int32:
            case TypeCode.Int64:
                value = CfrV8Value.CreateInt((int)clrValue);

                break;

            case TypeCode.SByte:
            case TypeCode.Byte:
            case TypeCode.UInt16:
            case TypeCode.UInt32:
            case TypeCode.UInt64:
                value = CfrV8Value.CreateUint((uint)clrValue);

                break;

            case TypeCode.Single:
            case TypeCode.Double:
                value = CfrV8Value.CreateDouble((double)clrValue);

                break;

            case TypeCode.Decimal:
                value = CfrV8Value.CreateDouble((double)Convert.ChangeType(clrValue, TypeCode.Double));
                break;

            case TypeCode.DateTime:
                value = CfrV8Value.CreateDate(CfrTime.FromUniversalTime((DateTime)clrValue));
                break;

            case TypeCode.Char:
            case TypeCode.String:
                value = CfrV8Value.CreateString((string)clrValue);
                break;
            }

            return(value);
        }
コード例 #3
0
 static ChromiumFxFactory()
 {
     Register <string>(CfrV8Value.CreateString);
     Register <Int64>((source) => CfrV8Value.CreateDouble((double)source));
     Register <UInt64>((source) => CfrV8Value.CreateDouble((double)source));
     Register <float>((source) => CfrV8Value.CreateDouble((double)source));
     Register <Int32>(CfrV8Value.CreateInt);
     Register <Int16>((source) => CfrV8Value.CreateInt((int)source));
     Register <UInt32>(CfrV8Value.CreateUint);
     Register <UInt16>((source) => CfrV8Value.CreateUint((UInt32)source));
     Register <char>((source) => CfrV8Value.CreateString(new StringBuilder().Append(source).ToString()));
     Register <double>(CfrV8Value.CreateDouble);
     Register <decimal>((source) => CfrV8Value.CreateDouble((double)source));
     Register <bool>(CfrV8Value.CreateBool);
     Register <DateTime>((source) => CfrV8Value.CreateDate(CfrTime.FromUniversalTime(source.ToUniversalTime())));
 }
コード例 #4
0
ファイル: HotelObject.cs プロジェクト: AfzaalLucky/HotelUI
        private void TransactionDownload(object sender, CfrV8HandlerExecuteEventArgs e)
        {
            if (e.Arguments.Length != 2 || !e.Arguments[0].IsDate || !e.Arguments[1].IsDate)
            {
                e.Exception = "Need to have 2 argument in date";
                return;
            }

            var time    = new CfrTime();
            var start   = time.ToUniversalTime(e.Arguments[0].DateValue);
            var end     = time.ToUniversalTime(e.Arguments[1].DateValue);
            var oThread = new Thread(() => {
                var filename  = GetFilename("Excel File|*.xlsx");
                var isSuccess = CreateTransactionReport(filename, start, end.AddDays(1));

                if (isSuccess)
                {
                    Process.Start(filename);
                }
            });

            oThread.SetApartmentState(ApartmentState.STA);
            oThread.Start();
        }
コード例 #5
0
        public bool GetSimpleValue(IJavascriptObject decoratedValue, out object res, Type targetType = null)
        {
            res = null;
            var value = decoratedValue.Convert();

            if (value.IsObject)
            {
                return(false);
            }

            if ((value.IsUndefined) || (value.IsNull))
            {
                return(true);
            }

            if (value.IsString)
            {
                res = value.StringValue;
                return(true);
            }

            if (value.IsBool)
            {
                res = value.BoolValue;
                return(true);
            }

            if (targetType.IsUnsigned())
            {
                if (value.IsUint)
                {
                    res = value.UintValue;
                }
            }
            else
            {
                if (value.IsInt)
                {
                    res = value.IntValue;
                }
            }

            if ((res == null) && (value.IsDouble))
            {
                res = value.DoubleValue;
            }

            if (res != null)
            {
                if (targetType != null)
                {
                    res = Convert.ChangeType(res, targetType);
                }

                return(true);
            }

            if (value.IsDate)
            {
                var dateValue = value.DateValue;
                res = CfrTime.ToUniversalTime(dateValue);
                return(true);
            }

            return(false);
        }
コード例 #6
0
ファイル: BaseObject.cs プロジェクト: AfzaalLucky/HotelUI
        public CfrV8Value ConvertValue(object data)
        {
            if (data == null)
            {
                return(CfrV8Value.CreateNull());
            }

            var typObject = data.GetType();
            var retValue  = CfrV8Value.CreateUndefined();

            switch (typObject.Name)
            {
            case "Boolean":
                retValue = Convert.ToBoolean(data);
                break;

            case "ExpandoObject":
                IDictionary <string, object> keyValues = data as IDictionary <string, object>;
                var resultx = CfrV8Value.CreateObject(new CfrV8Accessor(), new CfrV8Interceptor());

                foreach (var keypair in keyValues)
                {
                    resultx.SetValue(keypair.Key, ConvertValue(keypair.Value), CfxV8PropertyAttribute.ReadOnly);
                }

                retValue = resultx;
                break;

            case "DBNull":
                retValue = CfrV8Value.CreateNull();
                break;

            case "DateTime":
                var newValt    = Convert.ToDateTime(data);
                var univerTime = newValt.ToUniversalTime();
                retValue = CfrV8Value.CreateDate(CfrTime.FromUniversalTime(univerTime));
                break;

            case "Decimal":
            case "Double":
            case "Single":
                retValue = Convert.ToDouble(data);
                break;

            case "Byte":
            case "UInt16":
            case "UInt32":
            case "UInt64":
                retValue = Convert.ToUInt64(data);
                break;

            case "SByte":
            case "Int16":
            case "Int32":
            case "Int64":
                retValue = Convert.ToInt64(data);
                break;

            case "String":
                retValue = (string)data;
                break;

            default:
                if (typObject.IsEnum)
                {
                    retValue = Enum.GetName(typObject, data);
                }
                else if (typObject.IsArray)
                {
                    var pos = 0;

                    if (typObject.Name == "Byte[]")
                    {
                        var arr_byte = (byte[])data;
                        var result   = CfrV8Value.CreateArray(arr_byte.Length);

                        foreach (var item in arr_byte)
                        {
                            result.SetValue(pos++, ConvertValue(item));
                        }

                        retValue = result;
                    }
                    else
                    {
                        var arr    = (object[])data;
                        var result = CfrV8Value.CreateArray(arr.Length);

                        foreach (var item in arr)
                        {
                            result.SetValue(pos++, ConvertValue(item));
                        }

                        retValue = result;
                    }
                }
                else if (typObject.Name.StartsWith("Dictionary"))
                {
                    var dictionary = (IDictionary <string, object>)data;
                    var result     = CfrV8Value.CreateObject(new CfrV8Accessor(), new CfrV8Interceptor());

                    foreach (var keypair in dictionary)
                    {
                        result.SetValue(keypair.Key, ConvertValue(keypair.Value), CfxV8PropertyAttribute.ReadOnly);
                    }

                    retValue = result;
                }
                else if (typObject.IsClass)
                {
                    var propertyInfoes = typObject.GetProperties();
                    var result         = CfrV8Value.CreateObject(new CfrV8Accessor(), new CfrV8Interceptor());

                    foreach (var item in propertyInfoes)
                    {
                        result.SetValue(item.Name, ConvertValue(item.GetValue(data)), CfxV8PropertyAttribute.ReadOnly);
                    }

                    retValue = result;
                }
                break;
            }

            return(retValue);
        }
コード例 #7
0
 public IJavascriptObject CreateDateTime(DateTime value)
 {
     return(CfrV8Value.CreateDate(CfrTime.FromUniversalTime(value.ToUniversalTime())).ConvertBasic());
 }
コード例 #8
0
        public static CfrV8Value GetCfrObject(this JSObject _, object item)
        {
            var nameDict = new Dictionary <string, string>();

            var accessor = new CfrV8Accessor();

            var o = CfrV8Value.CreateObject(accessor);

            var t = item.GetType();

            foreach (var p in t.GetProperties())
            {
                var name = p.Name.Substring(0, 1).ToLower() + p.Name.Substring(1);

                nameDict[name] = p.Name;


                o.SetValue(name, CfxV8AccessControl.Default, CfxV8PropertyAttribute.DontDelete);
            }

            accessor.Get += (s, e) =>
            {
                var name = nameDict[e.Name];

                var p = t.GetProperty(name);

                var value     = p.GetValue(item, null);
                var valueType = value?.GetType();



                if (value == null)
                {
                    e.Retval = CfrV8Value.CreateNull();
                }
                else if (valueType == typeof(string) || valueType == typeof(Guid))
                {
                    e.Retval = CfrV8Value.CreateString((string)value);
                }
                else if (valueType == typeof(int) || valueType == typeof(short) || valueType == typeof(long))
                {
                    e.Retval = CfrV8Value.CreateInt((int)value);
                }
                else if (valueType == typeof(decimal))
                {
                    e.Retval = CfrV8Value.CreateDouble(Convert.ToDouble(value));
                }
                else if (valueType == typeof(float) || valueType == typeof(double))
                {
                    e.Retval = CfrV8Value.CreateDouble(Convert.ToDouble(value));
                }
                else if (valueType == typeof(bool))
                {
                    e.Retval = CfrV8Value.CreateBool(Convert.ToBoolean(value));
                }
                else if (valueType == typeof(DateTime))
                {
                    e.Retval = CfrV8Value.CreateDate(CfrTime.FromUniversalTime((DateTime)value));
                }
                else
                {
                    e.Retval = CfrV8Value.CreateNull();
                }



                e.SetReturnValue(true);
            };


            return(o);
        }