Я не уверен, что вы подразумеваете под быстрым, но вы можете собрать что-то вместе, используя отражение.Вам нужно сделать много предположений, например, все значения вашего объекта задаются через свойства.И ваши столбцы DataReader ДОЛЖНЫ соответствовать вашему имени свойства объекта.Но вы можете сделать что-то вроде этого:
ПРИМЕЧАНИЕ. Функция SetProperty
взята из статьи DevX .(Это было в VB.NET, и я преобразовал его в C # - если есть ошибки, я, вероятно, что-то пропустил.)
IList<MyObject> myObjList = new List<MyObject>();
while (reader.Read()){
int fieldCount = reader.FieldCount;
MyObject myObj = new MyObject();
for(int i=0;i<fieldCount;i++){
SetProperty(myObj, reader.GetName(i), reader.GetOrdinal(i));
}
myObjList.Add(myObj);
}
bool SetProperty(object obj, String propertyName, object val) {
try {
//get a reference to the PropertyInfo, exit if no property with that
//name
System.Reflection.PropertyInfo pi = obj.GetType().GetProperty(propertyName);
if (pi == null) then return false;
//convert the value to the expected type
val = Convert.ChangeType(val, pi.PropertyType);
//attempt the assignment
pi.SetValue(obj, val, null);
return true;
}
catch {
return false;
}
}
Нет гарантий, что этот код будет работать (я просто набираю егои не компилировать / тестировать его), но это, по крайней мере, может быть началом.
Я делал подобные вещи в прошлом и стал воображать, применяя атрибуты к своим свойствам, указав, какой столбец считывателя данных нужно отобразитьв собственность.Слишком много, чтобы включить сюда, но это только начало и, надеюсь, это то, что вы ищете.
Надеюсь, это поможет!