C#利用反射动态赋值

项目中我们可能会用到根据某一字符串判断属性然后赋值:

       /// <summary>
        /// 动态给类的属性赋值
        /// </summary>
        /// <param name="instance"></param>
        /// <param name="fileld"></param>
        /// <param name="value"></param>
        public static void setValue(object instance, string fileld, string value)
        {
            Type type = instance.GetType();
            object obj = Activator.CreateInstance(type);
            PropertyInfo[] pi = type.GetProperties();
            foreach (PropertyInfo item in pi)
            {
                //给属性赋值
                if ( item.Name == fileld)
                {
                    item.SetValue(instance, value, null);
                }
            }

        }
            Console.WriteLine("未动态赋值前:"+excel.B011);
            //赋值
            setValue(excel,"B011", "22");
            setValue(excel, "Id", "222");
            Console.WriteLine("动态赋值后:"+excel.B011);
            Console.WriteLine("动态赋值后Id:" + excel.Id);
            Console.WriteLine("动态赋值后Name:" + excel.Name);
            Console.ReadLine();

运行得到的结果:

未动态赋值前:
动态赋值后:22
动态赋值后Id:222
动态赋值后Name:

 

posted on 2016-01-07 17:39  liumumu  阅读(654)  评论(0)    收藏  举报