Ejemplo n.º 1
0
        private static object TurnValue(Type type, object value)
        {
            if (value == null)
            {
                return(null);
            }
            Type valueType = value.GetType();

            if (valueType == type)
            {
                return(value);
            }
            if (type == SystemTypes.String)
            {
                return(value.ToString());
            }
            if (type.IsEnum)
            {
                var name = value.ToString();
                if (valueType.IsEnum)
                {
                    name = ((int)value).ToString();
                }
                if (RegexHelper.IsNum(name))
                {
                    return(Enum.ToObject(type, Oct.ToInt32(name)));
                }
                else
                {
                    return(Enum.Parse(type, name));
                }
            }
            return(value);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 转换给定的值
 /// </summary>
 /// <param name="type">值的类型</param>
 /// <param name="value">给定的值,如果为null则返回默认设定项</param>
 /// <returns></returns>
 public static object ConvertToObject(Type type, string value)
 {
     if (Oct.IsNull(value))
     {
         if (type == ST.String)
         {
             return(string.Empty);
         }
         return(type.Assembly.CreateInstance(type.FullName));
     }
     if (ToObjectMap.ContainsKey(type))
     {
         Delegate method = (Delegate)ToObjectMap[type];
         return(method.DynamicInvoke(new object[] { value }));
     }
     else
     {
         if (type.BaseType == SystemTypes.Enum)
         {
             Enum enumValue = Oct.ToEnum(type, value);
             return(enumValue);
         }
         return(null);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 添加节点
        /// </summary>
        /// <param name="member"></param>
        /// <param name="value"></param>
        void AddSetting(ObjectField member, object value)
        {
            var name     = member.Name;
            var valuestr = string.Empty;

            if (!Oct.IsNull(value))
            {
                valuestr = Oct.ToString(value);
            }
            var node = appSettings.OwnerDocument.CreateNode(XmlNodeType.Element, "add", null);

            appSettings.AppendChild(node);
            var key = appSettings.OwnerDocument.CreateAttribute("key");

            key.Value = name;
            node.Attributes.Append(key);
            var valattr = appSettings.OwnerDocument.CreateAttribute("value");

            valattr.Value = valuestr;
            node.Attributes.Append(valattr);
            var destxt = appSettings.OwnerDocument.CreateAttribute("desc");

            destxt.Value = member.GetXmlDescription();
            node.Attributes.Append(destxt);
        }
Ejemplo n.º 4
0
        void Initilize(string file)
        {
            try
            {
                if (File.Exists(file))
                {
                    var jsonstr = ReadConfigTxt(file, false);
                    var jsonobj = (JToken)SerH.JsonDeserialize(jsonstr);
                    foreach (var filed in jsonobj)
                    {
                        switch (filed)
                        {
                        case JProperty jp:
                        {
                            if (sjon.ContainsKey(jp.Name))
                            {
                                var jold = sjon[jp.Name];
                                if (jold.Type == null)
                                {
                                    jold.Value = jp.Value;
                                }
                                else
                                {
                                    if (jold.Type.TargetType != jp.GetType())
                                    {
                                        jold.Value = Oct.ChangeType(jp.Value, jold.Type.TargetType);
                                    }
                                    else
                                    {
                                        jold.Value = jp.Value;
                                    }
                                }
                            }
                            else
                            {
                                sjon[jp.Name] = new JsonItem()
                                {
                                    Name  = jp.Name,
                                    Value = jp.Value,
                                    Type  = jp.GetType().GetTypeInfoN(),
                                    Desc  = jp.GetType().GetXmlDescription()
                                };
                            }
                        }

                        break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 5
0
        //把字符串转化成JSON对象
        void ParseJson(string JsonStr)
        {
            var JsonObjs = (JToken)SerH.JsonDeserialize(JsonStr);

            foreach (var itemfiled in JsonObjs)
            {
                switch (itemfiled)
                {
                case JProperty jp:
                    if (summary.ContainsKey(jp.Name))
                    {
                        var jold = summary[jp.Name];
                        if (jold.Type == null)
                        {
                            jold.Value = jp.Value;
                        }
                        else
                        {
                            if (jold.Type.TargetType != typeof(JProperty))
                            {
                                try
                                {
                                    jold.Value = Oct.ChangeType(jp.Value, jold.Type.TargetType);
                                }
                                catch { }
                            }
                            else
                            {
                                jold.Value = jp.Value;
                            }
                        }
                    }
                    else
                    {
                        summary[jp.Name] = new JsonItem()
                        {
                            Name  = jp.Name,
                            Type  = jp.GetType().GetTypeInfoN(),
                            Value = jp.Value
                        };
                    }
                    break;
                }
            }
        }
Ejemplo n.º 6
0
 public static string ConvertToString(Type type, object value)
 {
     if (Oct.IsNull(value))
     {
         return(null);
     }
     if (ToStringMap.ContainsKey(type))
     {
         Delegate method = (Delegate)ToStringMap[type];
         return((string)method.DynamicInvoke(new object[] { value }));
     }
     else
     {
         if (type.BaseType == SystemTypes.Enum)
         {
             return(Oct.ToString(value));
         }
         return(null);
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 更新节点
        /// </summary>
        /// <param name="member"></param>
        /// <param name="value"></param>
        /// <param name="node"></param>
        void updateSetting(ObjectField member, object value, XmlNode node)
        {
            var valattr = node.GetAttrib("value");

            if (valattr == null)
            {
                valattr = appSettings.OwnerDocument.CreateAttribute("value");
                node.Attributes.Append(valattr);
            }
            valattr.Value = Oct.ToString(value);
            RemoveSummary(node);

            var descAt = node.GetAttrib("desc");

            if (descAt == null)
            {
                descAt = appSettings.OwnerDocument.CreateAttribute("desc");
                node.Attributes.Append(descAt);
            }
            descAt.Value = member.GetXmlDescription();
        }
Ejemplo n.º 8
0
 public MySqlFunctionManager(bool allowFuncDefChange)
 {
     this.allowFuncDefChange                = allowFuncDefChange;
     parsingStrateg["CAST"]                 = FunctionParsingStrategy.Cast;
     parsingStrateg["POSITION"]             = FunctionParsingStrategy.Position;
     parsingStrateg["SUBSTR"]               = FunctionParsingStrategy.Substring;
     parsingStrateg["SUBSTRING"]            = FunctionParsingStrategy.Substring;
     parsingStrateg["TRIM"]                 = FunctionParsingStrategy.Trim;
     parsingStrateg["AVG"]                  = FunctionParsingStrategy.Avg;
     parsingStrateg["COUNT"]                = FunctionParsingStrategy.Count;
     parsingStrateg["GROUP_CONCAT"]         = FunctionParsingStrategy.GroupConcat;
     parsingStrateg["MAX"]                  = FunctionParsingStrategy.Max;
     parsingStrateg["MIN"]                  = FunctionParsingStrategy.Min;
     parsingStrateg["SUM"]                  = FunctionParsingStrategy.Sum;
     parsingStrateg["ROW"]                  = FunctionParsingStrategy.Row;
     parsingStrateg["CHAR"]                 = FunctionParsingStrategy.Char;
     parsingStrateg["CONVERT"]              = FunctionParsingStrategy.Convert;
     parsingStrateg["EXTRACT"]              = FunctionParsingStrategy.Extract;
     parsingStrateg["TIMESTAMPADD"]         = FunctionParsingStrategy.Timestampadd;
     parsingStrateg["TIMESTAMPDIFF"]        = FunctionParsingStrategy.Timestampdiff;
     parsingStrateg["GET_FORMAT"]           = FunctionParsingStrategy.GetFormat;
     functionPrototype["ABS"]               = new Abs(null);
     functionPrototype["ACOS"]              = new Acos(null);
     functionPrototype["ADDDATE"]           = new Adddate(null);
     functionPrototype["ADDTIME"]           = new Addtime(null);
     functionPrototype["AES_DECRYPT"]       = new AesDecrypt(null);
     functionPrototype["AES_ENCRYPT"]       = new AesEncrypt(null);
     functionPrototype["ANALYSE"]           = new Analyse(null);
     functionPrototype["ASCII"]             = new Ascii(null);
     functionPrototype["ASIN"]              = new Asin(null);
     functionPrototype["ATAN2"]             = new Atan2(null);
     functionPrototype["ATAN"]              = new Atan(null);
     functionPrototype["BENCHMARK"]         = new Benchmark(null);
     functionPrototype["BIN"]               = new Bin(null);
     functionPrototype["BIT_AND"]           = new BitAnd(null);
     functionPrototype["BIT_COUNT"]         = new BitCount(null);
     functionPrototype["BIT_LENGTH"]        = new BitLength(null);
     functionPrototype["BIT_OR"]            = new BitOR(null);
     functionPrototype["BIT_XOR"]           = new BitXor(null);
     functionPrototype["CEIL"]              = new Ceiling(null);
     functionPrototype["CEILING"]           = new Ceiling(null);
     functionPrototype["CHAR_LENGTH"]       = new CharLength(null);
     functionPrototype["CHARACTER_LENGTH"]  = new CharLength(null);
     functionPrototype["CHARSET"]           = new Charset(null);
     functionPrototype["COALESCE"]          = new Coalesce(null);
     functionPrototype["COERCIBILITY"]      = new Coercibility(null);
     functionPrototype["COLLATION"]         = new Collation(null);
     functionPrototype["COMPRESS"]          = new Compress(null);
     functionPrototype["CONCAT_WS"]         = new ConcatWs(null);
     functionPrototype["CONCAT"]            = new Concat(null);
     functionPrototype["CONNECTION_ID"]     = new ConnectionId(null);
     functionPrototype["CONV"]              = new Conv(null);
     functionPrototype["CONVERT_TZ"]        = new ConvertTz(null);
     functionPrototype["COS"]               = new Cos(null);
     functionPrototype["COT"]               = new Cot(null);
     functionPrototype["CRC32"]             = new Crc32(null);
     functionPrototype["CURDATE"]           = new Curdate();
     functionPrototype["CURRENT_DATE"]      = new Curdate();
     functionPrototype["CURRENT_TIME"]      = new Curtime();
     functionPrototype["CURTIME"]           = new Curtime();
     functionPrototype["CURRENT_TIMESTAMP"] = new Now();
     functionPrototype["CURRENT_USER"]      = new CurrentUser();
     functionPrototype["CURTIME"]           = new Curtime();
     functionPrototype["DATABASE"]          = new Database(null);
     functionPrototype["DATE_ADD"]          = new DateAdd(null);
     functionPrototype["DATE_FORMAT"]       = new DateFormat(null);
     functionPrototype["DATE_SUB"]          = new DateSub(null);
     functionPrototype["DATE"]              = new Date(null);
     functionPrototype["DATEDIFF"]          = new Datediff(null);
     functionPrototype["DAY"]               = new Dayofmonth(null);
     functionPrototype["DAYOFMONTH"]        = new Dayofmonth(null);
     functionPrototype["DAYNAME"]           = new Dayname(null);
     functionPrototype["DAYOFWEEK"]         = new Dayofweek(null);
     functionPrototype["DAYOFYEAR"]         = new Dayofyear(null);
     functionPrototype["DECODE"]            = new Decode(null);
     functionPrototype["DEFAULT"]           = new Default(null);
     functionPrototype["DEGREES"]           = new Degrees(null);
     functionPrototype["DES_DECRYPT"]       = new DesDecrypt(null);
     functionPrototype["DES_ENCRYPT"]       = new DesEncrypt(null);
     functionPrototype["ELT"]               = new Elt(null);
     functionPrototype["ENCODE"]            = new Encode(null);
     functionPrototype["ENCRYPT"]           = new Encrypt(null);
     functionPrototype["EXP"]               = new Exp(null);
     functionPrototype["EXPORT_SET"]        = new ExportSet(null);
     // functionPrototype.put("EXTRACT", new Extract(null));
     functionPrototype["EXTRACTVALUE"]  = new ExtractValue(null);
     functionPrototype["FIELD"]         = new Field(null);
     functionPrototype["FIND_IN_SET"]   = new FindInSet(null);
     functionPrototype["FLOOR"]         = new Floor(null);
     functionPrototype["FORMAT"]        = new Format(null);
     functionPrototype["FOUND_ROWS"]    = new FoundRows(null);
     functionPrototype["FROM_DAYS"]     = new FromDays(null);
     functionPrototype["FROM_UNIXTIME"] = new FromUnixtime(null);
     // functionPrototype.put("GET_FORMAT", new GetFormat(null));
     functionPrototype["GET_LOCK"]       = new GetLock(null);
     functionPrototype["GREATEST"]       = new Greatest(null);
     functionPrototype["HEX"]            = new Hex(null);
     functionPrototype["HOUR"]           = new Hour(null);
     functionPrototype["IF"]             = new IF(null);
     functionPrototype["IFNULL"]         = new IFNull(null);
     functionPrototype["INET_ATON"]      = new InetAton(null);
     functionPrototype["INET_NTOA"]      = new InetNtoa(null);
     functionPrototype["INSERT"]         = new Insert(null);
     functionPrototype["INSTR"]          = new Instr(null);
     functionPrototype["INTERVAL"]       = new Interval(null);
     functionPrototype["IS_FREE_LOCK"]   = new IsFreeLock(null);
     functionPrototype["IS_USED_LOCK"]   = new IsUsedLock(null);
     functionPrototype["ISNULL"]         = new IsNull(null);
     functionPrototype["LAST_DAY"]       = new LastDay(null);
     functionPrototype["LAST_INSERT_ID"] = new LastInsertId(null);
     functionPrototype["LCASE"]          = new Lower(null);
     functionPrototype["LEAST"]          = new Least(null);
     functionPrototype["LEFT"]           = new Left(null);
     functionPrototype["LENGTH"]         = new Length(null);
     functionPrototype["LN"]             = new Log(null);
     // Ln(X) equals Log(X)
     functionPrototype["LOAD_FILE"]       = new LoadFile(null);
     functionPrototype["LOCALTIME"]       = new Now();
     functionPrototype["LOCALTIMESTAMP"]  = new Now();
     functionPrototype["LOCATE"]          = new Locate(null);
     functionPrototype["LOG10"]           = new Log10(null);
     functionPrototype["LOG2"]            = new Log2(null);
     functionPrototype["LOG"]             = new Log(null);
     functionPrototype["LOWER"]           = new Lower(null);
     functionPrototype["LPAD"]            = new Lpad(null);
     functionPrototype["LTRIM"]           = new Ltrim(null);
     functionPrototype["MAKE_SET"]        = new MakeSet(null);
     functionPrototype["MAKEDATE"]        = new Makedate(null);
     functionPrototype["MAKETIME"]        = new Maketime(null);
     functionPrototype["MASTER_POS_WAIT"] = new MasterPosWait(null);
     functionPrototype["MD5"]             = new Md5(null);
     functionPrototype["MICROSECOND"]     = new Microsecond(null);
     functionPrototype["MID"]             = new Substring(null);
     functionPrototype["MINUTE"]          = new Minute(null);
     functionPrototype["MONTH"]           = new Month(null);
     functionPrototype["MONTHNAME"]       = new Monthname(null);
     functionPrototype["NAME_CONST"]      = new NameConst(null);
     functionPrototype["NOW"]             = new Now();
     functionPrototype["NULLIF"]          = new NullIF(null);
     functionPrototype["OCT"]             = new Oct(null);
     functionPrototype["OCTET_LENGTH"]    = new Length(null);
     functionPrototype["OLD_PASSWORD"]    = new OldPassword(null);
     functionPrototype["ORD"]             = new Ord(null);
     functionPrototype["PASSWORD"]        = new Password(null);
     functionPrototype["PERIOD_ADD"]      = new PeriodAdd(null);
     functionPrototype["PERIOD_DIFF"]     = new PeriodDiff(null);
     functionPrototype["PI"]              = new PI(null);
     functionPrototype["POW"]             = new Pow(null);
     functionPrototype["POWER"]           = new Pow(null);
     functionPrototype["QUARTER"]         = new Quarter(null);
     functionPrototype["QUOTE"]           = new Quote(null);
     functionPrototype["RADIANS"]         = new Radians(null);
     functionPrototype["RAND"]            = new Rand(null);
     functionPrototype["RELEASE_LOCK"]    = new ReleaseLock(null);
     functionPrototype["REPEAT"]          = new Repeat(null);
     functionPrototype["REPLACE"]         = new Replace(null);
     functionPrototype["REVERSE"]         = new Reverse(null);
     functionPrototype["RIGHT"]           = new Right(null);
     functionPrototype["ROUND"]           = new Round(null);
     functionPrototype["ROW_COUNT"]       = new RowCount(null);
     functionPrototype["RPAD"]            = new Rpad(null);
     functionPrototype["RTRIM"]           = new Rtrim(null);
     functionPrototype["SCHEMA"]          = new Database(null);
     functionPrototype["SEC_TO_TIME"]     = new SecToTime(null);
     functionPrototype["SECOND"]          = new Second(null);
     functionPrototype["SESSION_USER"]    = new User(null);
     functionPrototype["SHA1"]            = new Sha1(null);
     functionPrototype["SHA"]             = new Sha1(null);
     functionPrototype["SHA2"]            = new Sha2(null);
     functionPrototype["SIGN"]            = new Sign(null);
     functionPrototype["SIN"]             = new Sin(null);
     functionPrototype["SLEEP"]           = new Sleep(null);
     functionPrototype["SOUNDEX"]         = new Soundex(null);
     functionPrototype["SPACE"]           = new Space(null);
     functionPrototype["SQRT"]            = new Sqrt(null);
     functionPrototype["STD"]             = new Std(null);
     functionPrototype["STDDEV_POP"]      = new StdDevPop(null);
     functionPrototype["STDDEV_SAMP"]     = new StdDevSamp(null);
     functionPrototype["STDDEV"]          = new StdDev(null);
     functionPrototype["STR_TO_DATE"]     = new StrToDate(null);
     functionPrototype["STRCMP"]          = new Strcmp(null);
     functionPrototype["SUBDATE"]         = new Subdate(null);
     functionPrototype["SUBSTRING_INDEX"] = new SubstringIndex(null);
     functionPrototype["SUBTIME"]         = new Subtime(null);
     functionPrototype["SYSDATE"]         = new Sysdate(null);
     functionPrototype["SYSTEM_USER"]     = new User(null);
     functionPrototype["TAN"]             = new Tan(null);
     functionPrototype["TIME_FORMAT"]     = new TimeFormat(null);
     functionPrototype["TIME_TO_SEC"]     = new TimeToSec(null);
     functionPrototype["TIME"]            = new Time(null);
     functionPrototype["TIMEDIFF"]        = new Timediff(null);
     functionPrototype["TIMESTAMP"]       = new Timestamp(null);
     // functionPrototype.put("TIMESTAMPADD", new Timestampadd(null));
     // functionPrototype.put("TIMESTAMPDIFF", new Timestampdiff(null));
     functionPrototype["TO_DAYS"]             = new ToDays(null);
     functionPrototype["TO_SECONDS"]          = new ToSeconds(null);
     functionPrototype["TRUNCATE"]            = new Truncate(null);
     functionPrototype["UCASE"]               = new Upper(null);
     functionPrototype["UNCOMPRESS"]          = new Uncompress(null);
     functionPrototype["UNCOMPRESSED_LENGTH"] = new UncompressedLength(null);
     functionPrototype["UNHEX"]               = new Unhex(null);
     functionPrototype["UNIX_TIMESTAMP"]      = new UnixTimestamp(null);
     functionPrototype["UPDATEXML"]           = new UpdateXml(null);
     functionPrototype["UPPER"]               = new Upper(null);
     functionPrototype["USER"]          = new User(null);
     functionPrototype["UTC_DATE"]      = new UtcDate(null);
     functionPrototype["UTC_TIME"]      = new UtcTime(null);
     functionPrototype["UTC_TIMESTAMP"] = new UtcTimestamp(null);
     functionPrototype["UUID_SHORT"]    = new UuidShort(null);
     functionPrototype["UUID"]          = new Uuid(null);
     functionPrototype["VALUES"]        = new Values(null);
     functionPrototype["VAR_POP"]       = new VarPop(null);
     functionPrototype["VAR_SAMP"]      = new VarSamp(null);
     functionPrototype["VARIANCE"]      = new Variance(null);
     functionPrototype["VERSION"]       = new Version(null);
     functionPrototype["WEEK"]          = new Week(null);
     functionPrototype["WEEKDAY"]       = new Weekday(null);
     functionPrototype["WEEKOFYEAR"]    = new Weekofyear(null);
     functionPrototype["YEAR"]          = new Year(null);
     functionPrototype["YEARWEEK"]      = new Yearweek(null);
 }
Ejemplo n.º 9
0
 public override int GetHashCode()
 {
     return(DetailsId.GetHashCode() ^ DetailsName.GetHashCode() ^ Jan.GetHashCode() ^ Feb.GetHashCode() ^ Apr.GetHashCode() ^ May.GetHashCode() ^ Jun.GetHashCode() ^ Jul.GetHashCode() ^ Aug.GetHashCode() ^ Sep.GetHashCode() ^ Oct.GetHashCode() ^ Nov.GetHashCode()
            ^ Dec.GetHashCode() ^ UOM.GetHashCode() ^ UOMID.GetHashCode());
 }
Ejemplo n.º 10
0
 public override object GetParameter(string name, ObjectField field, object defVal)
 {
     lock (appSettings)
     {
         var nodes = appSettings.SelectNodes("add[@key='" + name + "']");
         var count = nodes.TryFunc(a => a.Count);
         if (nodes != null && count > 0)
         {
             if (field == null)
             {
                 for (int i = 0; i < count; i++)
                 {
                     var valstr = GetNodeVal(nodes[i]);
                     if (!valstr.IsEmpty())
                     {
                         return(valstr);
                     }
                 }
                 return(null);
             }
             else
             {
                 var thin = field.Type.GetTypeInfoN();
                 if (thin.IsArray)
                 {
                     var eltype = thin.ElementType;
                     var array  = Array.CreateInstance(eltype.TargetType, count);
                     for (int i = 0; i < count; i++)
                     {
                         var valstr = GetNodeVal(nodes[i]);
                         array.SetValue(Oct.ToObject(eltype.TargetType, valstr), i);
                     }
                     return(array);
                 }
                 else if (thin.IsIList)
                 {
                     var eltype = thin.ElementType;
                     var array  = typeof(List <>).MakeGenericType(eltype.TargetType).CreateInstance(count) as System.Collections.IList;
                     for (int i = 0; i < count; i++)
                     {
                         var valstr = GetNodeVal(nodes[i]);
                         array[i] = Oct.ToObject(eltype.TargetType, valstr);
                     }
                     return(array);
                 }
                 else
                 {
                     for (int i = 0; i < count; i++)
                     {
                         var valstr = GetNodeVal(nodes[i]);
                         if (!valstr.IsEmpty())
                         {
                             return(Oct.ToObject(field.Type, valstr));
                         }
                     }
                     return(null);
                 }
             }
         }
     }
     return(null);
 }