У меня есть базовый класс, у которого есть API, который возвращает DataTable на основе идентификаторов, и мне нужно иметь объект для каждого идентификатора.
Я ненавижу работать с таблицами данных, поэтому я хотел написатькод отображения, который мне нужно только сопоставить свойства с определенными полями в таблице данных.
Есть ли более быстрый способ сделать это, чем мой пример?
Спасибо.
public abstract class BaseClass<T> where T : BaseClass<T>
{
protected abstract T MapObject(DataRow row);
protected abstract int SomeIdentifier { get; }
public IList<T> GetData()
{
return ConvertDataTableToGenericList(GetDataTableFromOtherSource(this.SomeIdentifier));
}
private IList<T> ConvertDataTableToGenericList(DataTable table)
{
IList<T> objectList = new List<T>();
foreach (DataRow row in table.Rows)
{
objectList.Add(MapObject(row));
}
return objectList;
}
}
public class DerivedClass : BaseClass<DerivedClass>
{
public int ID { get; set; }
protected override int SomeIdentifier
{
get { return 1; }
}
protected override DerivedClass MapObject(DataRow row)
{
return new DerivedClass()
{
ID = (int)row["ID"]
};
}
}