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; }