有批量数据给反射出来的实体类赋值的优化问题

我的代码如下
这里对每个<T> 都反射了一次 , 我感觉这种方法很差
有没有更好的方法?

C# code

//输出的ModelList
                System.Collections.Generic.List<T> list = new System.Collections.Generic.List<T>();
                foreach (Model.LanguageCode co in langmodelist)
                {
                    Type type = typeof(T);
                    T t = Activator.CreateInstance<T>();
                    PropertyInfo[] pi = type.GetProperties();
                    //获取属性Length
                    int listcount = 0;
                    //保存属性名
                    List<string> PropertyName = new List<string>();
                    //保存属性值
                    List<string[]> PropertyValue = new List<string[]>();
                    //获取输入
                    foreach (PropertyInfo p in pi)
                    {
                        if (form[co.Language_code + p.Name] != null)
                        {
                            string[] value = form[co.Language_code + p.Name].Split(',');
                            PropertyName.Add(p.Name);
                            PropertyValue.Add(value);
                            if (listcount == 0)
                            {
                                listcount = value.Length;
                            }
                        }
                    }

                    T tt =null;
                    //根据length得到ModelList
                    for (int i = 0; i < listcount; i++)
                    {
                        tt = Activator.CreateInstance<T>();
                        PropertyInfo[] pis = type.GetProperties();
                        //
                        foreach (PropertyInfo p in pis)
                        {
                            if (Attribute.GetCustomAttribute(p, typeof(Model.LanguageFieldAttribute)) != null)
                            {
                                p.SetValue(tt, ChangeType(co.Language_code, p.PropertyType), null);
                            }
                            //name对应的string[]索引号
                            int j = PropertyName.FindIndex(delegate(string s) { return s == p.Name; });
                            if (j >= 0)
                            {
                                try
                                {
                                    p.SetValue(tt, ChangeType(PropertyValue[j][i], p.PropertyType), null);
                                }
                                catch
                                {
                                }
                            }
                        }                       
                    }
                    list.Add(tt);
                }

作者: ayun00   发布时间: 2011-06-16

有人来吗?

作者: ayun00   发布时间: 2011-06-16