2010-05-18 104 views
0

我有一个类如何分配一个类属性值otehr类的属性值

public Student student {get;set;} 

public Students students {get;set;} 

两个类属性是相同的.. 我正在从数据库学生价值观。我需要分配这些值给学生.. 任何人都可以告诉我如何做到这一点?

回答

0

需要帮助:1)指定类的各种属性,或2)从数据库中获取数据?

这里有一个总结:

从SQL(或MySQL或Oracle等)填充类的属性,你需要创建一个SqlConnection,一个SqlCommandSqlDataReader。使用连接,编写查询(命令),以便获取所需的数据。然后,在while循环中使用读取器读取结果集中的值,并填充您的类。

每个类都应该有这样的字符串,整型,等等,您只需设置变量一样的属性:

student.Name = Reader["name"].Equals(DBNull.Value ?? "" : (string)Reader["name"]; 

如果您需要更多的帮助,发表您的类的定义,也许对一些更多的信息数据库,你想要填充类(例如表格结构和数据)。

0

你可以做这样的事情:http://gist.github.com/405432

它使用反射做一个对象上了深刻的成员逐一克隆:

static void Main(string[] args) { 
     foreach (var student in Students) 
      student.CloneFrom(Student); 
    } 

    public static void CloneFrom<T>(this T ToObj, T FromObj) { 
     CloneFrom(ToObj, FromObj, new Dictionary<object, object>()); 
    } 

    private static FieldInfo[] GetMemberFields(this Type type) { 
     return type.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); 
    } 

    private static void CloneFrom<T>(T ToObj, T FromObj, Dictionary<object, object> Values) { 
     Values.Add(FromObj, ToObj); //The dictionary is used to prevent infinite recursion 

     var fields = ToObj.GetType().GetMemberFields(); 
     object value = null; 
     object othervalue = null; 
     foreach (var field in fields) { 
      value = field.GetValue(FromObj); 
      othervalue = field.GetValue(ToObj); 
      if (object.Equals(othervalue, value)) continue; 

      if (value != null && Values.ContainsKey(value)) { 
       //Prevent recursive calls: objA.fieldB.fieldC = objA 

       field.SetValue(ToObj, Values[value]); 
      } else if (othervalue != null && value != null && !field.FieldType.IsPrimitive && !field.FieldType.IsValueType && !(value is string) 
       && field.FieldType.GetMemberFields().Any()) { 

       //Do not overwrite object references 
       CloneFrom(othervalue, value, Values); 
      } else { 
       field.SetValue(ToObj, value); 
      } 
     } 
    }