c#反射实现实体类生成以及数据获取与赋值

public static IList<T> FillList<T>(System.Data.IDataReader reader)

    {

        IList<T> lst = new List<T>();

        while (reader.Read())

        {

            T RowInstance = Activator.CreateInstance<T>();

            foreach (PropertyInfo Property in typeof(T).GetProperties())

            {

                foreach (

                    BindingFieldAttribute FieldAttr in Property.GetCustomAttributes(

                    typeof(BindingFieldAttribute), true))

                {

                    try

                    {

                        int Ordinal = reader.GetOrdinal(FieldAttr.FieldName);

                        if (reader.GetValue(Ordinal) != DBNull.Value)

                        {

                            Property.SetValue(RowInstance, 

                                Convert.ChangeType(reader.GetValue(Ordinal), 

                                Property.PropertyType), null);

                        }

                    }

                    catch

                    {

                        break;

                    }

                }

            }

            lst.Add(RowInstance);

        }

        return lst;

    }
原文地址:https://www.cnblogs.com/jeffrey77/p/2537748.html