//stcTmp 是个结构体 public struct stc1
    {        public string sTable;        public string sColumn;
        
        public stcColumn(int n)
        {
            sTable = "";
            sColumn = "";
            
        }
    }
stc1 stcTmp =new stc1(0);
foreach (FieldInfo fiTmp in stcTmp.GetType().GetFields())
        {
            if (fiTmp != null)
            {
                fiTmp.SetValue(stcTmp, "aaa");
            }
        }这句  fiTmp.SetValue(stcTmp, "aaa")无效,请问各位高手哪里错了?

解决方案 »

  1.   

     int i = 1;      
    foreach(FieldInfo var in a.GetType().GetFields(BindingFlags.NonPublic))      {         
     if (var.DeclaringType == typeof(int))          
    {             
     var.SetValue(a, i);         
     }      
    } private   object  Set(object   o) 
                    { 
                            FieldInfo[]   fields =o.GetType().GetFields(); 
                            Type   t=o.GetType(); 
                            if(fields[0].FieldType.ToString()=="System.Int32 ") 
                            { 
                                    fields[0].SetValue(o,i); 
                            } 
                            return   o; 
                    } 
      

  2.   

    本帖最后由 ojlovecd 于 2009-12-15 21:30:47 编辑
      

  3.   

    stc1 stcTmp = new stc1();
                    object obj = stcTmp;
                    foreach (FieldInfo fiTmp in stcTmp.GetType().GetFields())
                    {
                        if (fiTmp != null)
                        {
                            fiTmp.SetValue(obj, "aaa");
                        }
                    }
                    stcTmp = (stc1)obj;
      

  4.   

    此方法将 value 分配给此实例在 obj 对象上反映的字段。如果该字段是静态的,则将忽略 obj。对于非静态字段,obj 应是继承或声明该字段的类的实例