zoukankan      html  css  js  c++  java
  • 修改数据表部分字段方法封装-及-动态生成对象并动态添加属性

    代码:

            //这样写的话,输入的是表的行对象,返回的是数据字典,可以直接用到更新操作里,
            public static Object AlterDate(Object tabledataobj)
            {
                List<string> namelist = new List<string>();
                List<Object> valuelist = new List<object>();
    
                Type t = tabledataobj.GetType();
                foreach (PropertyInfo pi in t.GetProperties())
                {
                    if (pi.Name == "id")
                    { }
                    else
                    {
                        Object value = pi.GetValue(tabledataobj);
                        if (value != null)
                        {
                            namelist.Add(pi.Name);
                            valuelist.Add(value);
                        }
                    }
                }
    
                Dictionary<string, object> temp = new Dictionary<string, object>();
                
                for (int i = 0; i < namelist.Count; i++)
                {
                    temp.Add(namelist[i], valuelist[i]);
                }
                temp.Add("updateTime", DateTime.Now);
                return temp;
            }
            //用到更新操作里,参考如下:
                        var dic = new Dictionary<string, string>();
                        dic.Add("name", "第十三条");
                        dic.Add("areaId", "1");
                        db.Update<School, int>(dic, 13);
            或:
            Object obj = AlterTable.AlterDate(dt);
            ……
            var result = db.Update<t_customer,int>(obj,cusid);
    
    
            //方法重载,只有第二个参数里包含的字段才能进行修改
            public static Object AlterDate(Object tabledataobj,List<string> modifiableField)
            {
                List<string> namelist = new List<string>();
                List<Object> valuelist = new List<object>();
    
                Type t = tabledataobj.GetType();
                foreach (PropertyInfo pi in t.GetProperties())
                {
                    if (pi.Name == "id")
                    { }
                    else
                    {
                        if (modifiableField.Contains(pi.Name))
                        {
                            Object value = pi.GetValue(tabledataobj);
                            if (value != null)
                            {
                                namelist.Add(pi.Name);
                                valuelist.Add(value);
                            }
                        }
                    }
                }
    
                Dictionary<string, object> temp = new Dictionary<string, object>();
    
                for (int i = 0; i < namelist.Count; i++)
                {
                    temp.Add(namelist[i], valuelist[i]);
                }
                temp.Add("updateTime", DateTime.Now);
                return temp;
            }
    
    
            //这样写的话,后面表示的是动态的的生成对象,并且动态的给对象添加属性
            public static Object AlterDate(Object tabledataobj)
            {
                List<string> namelist = new List<string>();
                List<Object> valuelist = new List<object>();
    
                Type t = tabledataobj.GetType();
                foreach (PropertyInfo pi in t.GetProperties())
                {
                    if (pi.Name == "id")
                    { }
                    else
                    {
                        Object value = pi.GetValue(tabledataobj);
                        if (value != null)
                        {
                            namelist.Add(pi.Name);
                            valuelist.Add(value);
                        }
                    }
                }
    
                Dictionary<string, object> temp = new Dictionary<string, object>();
                
                for (int i = 0; i < namelist.Count; i++)
                {
                    temp.Add(namelist[i], valuelist[i]);
                }
                temp.Add("updateTime", DateTime.Now);
    
                dynamic result = new System.Dynamic.ExpandoObject();
    
                foreach (KeyValuePair<string, object> item in temp)
                {
                    ((IDictionary<string, object>)result).Add(item.Key, item.Value);
                }
    
                return result;
            }

    // 另一种方式
    ExpandoObject 类,“需引用System.Dynamic命名空间” 

                dynamic person = new ExpandoObject();

                person.Name = "cary";

                person.Age = 25;

                person.ShowDescription = new Func<string>(() => person.Name + person.Age);

     

                Console.WriteLine(person.Name+person.Age+person.ShowDescription());           

                Console.ReadLine();

     
  • 相关阅读:
    Go
    Go
    Go
    Go
    Go
    Go
    爬虫常用相关库
    Go
    python基础第7天(day19)
    python基础第五天(day17)元组,集合,字符串操作 字符编码:
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/7521185.html
Copyright © 2011-2022 走看看