6
public static IList<T> ConvertTo<T>(DataTable table)
{
if (table == null)
{
return null;
}
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}
return ConvertTo<T>(rows);
}
public static T ConvertItem<T>(DataTable table)
{
T obj = default(T);
if (table != null && table.Rows.Count > 0)
{
obj = CreateItem<T>(table.Rows[0]);
}
return obj;
}
public static T CreateItem<T>(DataRow row)
{
T obj = default(T);
if (row != null)
{
obj = Activator.CreateInstance<T>();
Type entityType = typeof(T);
PropertyInfo[] properties = entityType.GetProperties();
for (int i = 0; i < properties.Length; i++)
{
object[] customAttributes = properties[i].GetCustomAttributes(typeof(ColumnAttributes), false);
ColumnAttributes dataField = null;
if (null != customAttributes && customAttributes.Length > 0 && null != (dataField = customAttributes[0] as ColumnAttributes))
{
if (row.Table.Columns.Contains(dataField.FieldName) && !row[dataField.FieldName].GetType().FullName.Equals("System.DBNull"))
{
properties[i].SetValue(obj, row[dataField.FieldName], null);
}
}
}
}
return obj;
}
這就是我們現在唯一能想到的,就是我們必須做一些我們需要的東西垃圾收集我們自己?將DataTable轉換爲泛型列表?
想法?
爲什麼我們認爲有可能是泄漏?:
我們越來越內存不足的錯誤。如果頁面不需要業務邏輯來使用這種類型的轉換,那麼II6過程不會增長,但是當我們點擊一個使用它的頁面時,它會增長。
我們目前正在讓螞蟻探查器給我們更多的細節。
你有什麼證據泄漏的? – 2009-02-13 09:32:21
準確的問題在哪裏? – 2009-02-13 09:35:49