zoukankan      html  css  js  c++  java
  • 参数字符串转字典数组

    #region Assign parameters to specified objects
    
            /// <summary>
            /// Assign parameters to specified objects
            /// </summary>
            /// <typeparam name="T">object type</typeparam>
            /// <param name="dic">Fields/values</param>
            /// <returns></returns>
            static public T Assign<T>(Dictionary<string, string> dic) where T : new()
            {
                Type myType = typeof(T);
                T entity = new T();
                var fields = myType.GetProperties();
                string val = string.Empty;
                object obj = null;
    
                foreach (var field in fields)
                {
                    if (!dic.ContainsKey(field.Name))
                        continue;
                    val = dic[field.Name];
    
                    object defaultVal;
                    if (field.PropertyType.Name.Equals("String"))
                        defaultVal = "";
                    else if (field.PropertyType.Name.Equals("Boolean"))
                    {
                        defaultVal = false;
                        val = (val.Equals("1") || val.Equals("on")).ToString();
                    }
                    else if (field.PropertyType.Name.Equals("Decimal"))
                        defaultVal = 0M;
                    else
                        defaultVal = 0;
    
                    if (!field.PropertyType.IsGenericType)
                        obj = string.IsNullOrEmpty(val) ? defaultVal : Convert.ChangeType(val, field.PropertyType);
                    else
                    {
                        Type genericTypeDefinition = field.PropertyType.GetGenericTypeDefinition();
                        if (genericTypeDefinition == typeof(Nullable<>))
                            obj = string.IsNullOrEmpty(val) ? defaultVal : Convert.ChangeType(val, Nullable.GetUnderlyingType(field.PropertyType));
                    }
    
                    field.SetValue(entity, obj, null);
                }
    
                return entity;
            }
    
            #endregion
    
            #region Converting parameter strings to dictionary arrays 
            /// <summary>
            /// Converting parameter strings to dictionary arrays 
            /// </summary>
            static public Dictionary<String, String> GetFormData(string formData)
            {
                try
                {
                    String[] dataArry = formData.Split('&');
                    Dictionary<String, String> dataDic = new Dictionary<string, string>();
                    for (int i = 0; i <= dataArry.Length - 1; i++)
                    {
                        String dataParm = dataArry[i];
                        int dIndex = dataParm.IndexOf("=");
                        String key = dataParm.Substring(0, dIndex);
                        String value = dataParm.Substring(dIndex + 1, dataParm.Length - dIndex - 1);
                        dataDic.Add(key, value);
                    }
    
                    return dataDic;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
            #endregion
  • 相关阅读:
    【crontab】误删crontab及其恢复
    New Concept English there (7)
    New Concept English there (6)
    New Concept English there (5)
    New Concept English there (4)
    New Concept English there (3)
    New Concept English there (2)Typing speed exercise
    New Concept English there (1)Typing speed exercise
    New Concept English Two 34 game over
    New Concept English Two 33 94
  • 原文地址:https://www.cnblogs.com/hofmann/p/11345739.html
Copyright © 2011-2022 走看看