根据函数的参数创建一个对象列表
create a List of object based on a function's parameter
如何根据函数的参数创建对象列表?以下是我的代码:
List<ItemMaster> list = new List<ItemMaster>();
foreach (DataRow row in resp.DataSet.Tables[0].Rows)
{
ItemMaster item = new ItemMaster();
foreach (PropertyInfo vr in item.GetType().GetProperties())
{
if (resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(item, Convert.ChangeType(row[vr.Name], vr.PropertyType), null);
}
}
list.Add(item);
}
我有多个像 ItemMaster 这样的 class,所以我想做一个函数,它以 DataTable 和 Class 作为参数,并且 return 那个特定 class 在函数的参数中传递。
如何实施
可以使用Generic方法,Allclass可以实现特定的接口。
public IList<T> CreateList<T>(Datatable table) where T : IInterface
如果我没理解错的话,您似乎无法想出适用于任意项目类型的单一方法实现。如果那是正确的,那么这样的事情可能适用于你的情况:
List<T> FillListFromTable<T>(DataTable dataTable) where T : new()
{
List<T> list = new List<T>();
foreach (DataRow row in dataTable.Rows)
{
T item = new T();
foreach (PropertyInfo vr in typeof(T).GetProperties())
{
if (dataTable.Columns.Contains(vr.Name))
{
vr.SetValue(item,
Convert.ChangeType(row[vr.Name], vr.PropertyType), null);
}
}
list.Add(item);
}
return list;
}
你可以这样称呼它:
List<ItemMaster> itemMasterList = FillListFromTable<ItemMaster>(resp.DataSet.Tables[0]);
就用泛型吧。作为奖励,您可以 return 通用列表。
List<T> ToList<T>(DataSet dataset): new()
{
List<T> list = new List<T>();
foreach (DataRow row in resp.DataSet.Tables[0].Rows)
{
T item = new T();
foreach (PropertyInfo vr in item.GetType().GetProperties())
{
if (resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(item, Convert.ChangeType(row[vr.Name], vr.PropertyType), null);
}
}
list.Add(item);
}
}
如何根据函数的参数创建对象列表?以下是我的代码:
List<ItemMaster> list = new List<ItemMaster>();
foreach (DataRow row in resp.DataSet.Tables[0].Rows)
{
ItemMaster item = new ItemMaster();
foreach (PropertyInfo vr in item.GetType().GetProperties())
{
if (resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(item, Convert.ChangeType(row[vr.Name], vr.PropertyType), null);
}
}
list.Add(item);
}
我有多个像 ItemMaster 这样的 class,所以我想做一个函数,它以 DataTable 和 Class 作为参数,并且 return 那个特定 class 在函数的参数中传递。
如何实施
可以使用Generic方法,Allclass可以实现特定的接口。
public IList<T> CreateList<T>(Datatable table) where T : IInterface
如果我没理解错的话,您似乎无法想出适用于任意项目类型的单一方法实现。如果那是正确的,那么这样的事情可能适用于你的情况:
List<T> FillListFromTable<T>(DataTable dataTable) where T : new()
{
List<T> list = new List<T>();
foreach (DataRow row in dataTable.Rows)
{
T item = new T();
foreach (PropertyInfo vr in typeof(T).GetProperties())
{
if (dataTable.Columns.Contains(vr.Name))
{
vr.SetValue(item,
Convert.ChangeType(row[vr.Name], vr.PropertyType), null);
}
}
list.Add(item);
}
return list;
}
你可以这样称呼它:
List<ItemMaster> itemMasterList = FillListFromTable<ItemMaster>(resp.DataSet.Tables[0]);
就用泛型吧。作为奖励,您可以 return 通用列表。
List<T> ToList<T>(DataSet dataset): new()
{
List<T> list = new List<T>();
foreach (DataRow row in resp.DataSet.Tables[0].Rows)
{
T item = new T();
foreach (PropertyInfo vr in item.GetType().GetProperties())
{
if (resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(item, Convert.ChangeType(row[vr.Name], vr.PropertyType), null);
}
}
list.Add(item);
}
}