正好有人问这个,代码非常简单,最基本的应用,直接贴代码 
   
using System; 
 
namespace Test 


{ 

    /**//// <summary> 
    /// Class1 的摘要说明。 
    /// </summary> 
    class Class1 

    
{ 

        /**//// <summary> 
        /// 应用程序的主入口点。 
        /// </summary> 
        [STAThread] 
        static void Main(string[] args) 

        
{ 
            // 
            // TODO: 在此处添加代码以启动应用程序 
            // 
            MyFieldClass dv=new MyFieldClass(); 
            System.Collections.Hashtable ht1=new System.Collections.Hashtable(); 
            ht1.Add("FieldA","A"); 
            ht1.Add("FieldC","C"); 
            SetField1(ht1,dv);//如果类中的字段匹配Hashtable中的Key则重新设定 
            //SetField2(ht1,dv)//如果Hashtable中的Key匹配类中的字段则重新设定,效果等同于SetField1 
            Console.WriteLine(dv.FieldA);//A 
            Console.WriteLine(dv.FieldB);//bb 
            Console.WriteLine(dv.FieldC);//C 
            System.Collections.Hashtable ht2=new System.Collections.Hashtable(); 
            ht2.Add("PropertyB","b"); 
            ht2.Add("PropertyC","c"); 
            SetProperty1(ht2,dv);//如果类中的属性匹配Hashtable中的Key则重新设定 
            //SetProperty2(ht2,dv);//如果Hashtable中的Key匹配类中的属性则重新设定,效果等同于SetProperty1 
            Console.WriteLine(dv.FieldA);//A 
            Console.WriteLine(dv.FieldB);//b 
            Console.WriteLine(dv.FieldC);//c 
             
        } 
 
        public static void SetProperty1(System.Collections.Hashtable ht1,MyFieldClass dv) 

        
{ 
            foreach(System.Collections.DictionaryEntry de in ht1) 

            
{ 
                System.Reflection.PropertyInfo pi=dv.GetType().GetProperty(de.Key.ToString()); 
                if(pi!=null)pi.SetValue(dv,de.Value.ToString(),null); 
            } 
        } 
 
        public static void SetProperty2(System.Collections.Hashtable ht1,MyFieldClass dv) 

        
{ 
            foreach(System.Reflection.PropertyInfo pi in dv.GetType().GetProperties()) 

            
{ 
                if(ht1.Contains(pi.Name))pi.SetValue(dv,ht1[pi.Name],null); 
            } 
        } 
 
        public static void SetField1(System.Collections.Hashtable ht2,MyFieldClass dv) 

        
{ 
            foreach(System.Collections.DictionaryEntry de in ht2) 

            
{ 
                System.Reflection.FieldInfo fi=dv.GetType().GetField(de.Key.ToString()); 
                if(fi!=null)fi.SetValue(dv,de.Value.ToString()); 
            } 
        } 
 
        public static void SetField2(System.Collections.Hashtable ht2,MyFieldClass dv) 

        
{ 
            foreach(System.Reflection.FieldInfo fi in dv.GetType().GetFields()) 

            
{ 
                if(ht2.Contains(fi.Name))fi.SetValue(dv,ht2[fi.Name]); 
            } 
        } 
    } 
 
    public class MyFieldClass 

    
{ 
        public string FieldA="aa"; 
        public string FieldB="bb"; 
        public string FieldC="cc"; 
 
        public string PropertyA 

        
{ 
            get 

            
{ 
                return FieldA; 
            } 
            set 

            
{ 
                FieldA=value; 
            } 
        } 
 
        public string PropertyB 

        
{ 
            get 

            
{ 
                return FieldB; 
            } 
            set 

            
{ 
                FieldB=value; 
            } 
        } 
 
        public string PropertyC 

        
{ 
            get 

            
{ 
                return FieldC; 
            } 
            set 

            
{ 
                FieldC=value; 
            } 
        } 
    } 
 
}