C# 基于函数创建对象列表';s参数
如何基于函数的参数创建对象列表?以下是我的代码:C# 基于函数创建对象列表';s参数,c#,.net,c#-4.0,C#,.net,C# 4.0,如何基于函数的参数创建对象列表?以下是我的代码: 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()) {
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);
}
List List=新列表();
foreach(相应DataSet.Tables[0]中的DataRow行)
{
ItemMaster item=新ItemMaster();
foreach(item.GetType().GetProperties()中的PropertyInfo vr)
{
if(resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(项,Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
我有多个类,比如ItemMaster,所以我想创建一个函数,它以DataTable和Class作为参数,并返回在函数参数中传递的特定类的列表
如何实现这一点您可以使用泛型方法,并且所有类都可以实现特定的接口
public IList<T> CreateList<T>(Datatable table) where T : IInterface
公共IList CreateList(Datatable表),其中T:IInterface
您可以使用泛型方法,所有类都可以实现特定的接口
public IList<T> CreateList<T>(Datatable table) where T : IInterface
公共IList CreateList(Datatable表),其中T:IInterface
您可以使用泛型方法,所有类都可以实现特定的接口
public IList<T> CreateList<T>(Datatable table) where T : IInterface
公共IList CreateList(Datatable表),其中T:IInterface
您可以使用泛型方法,所有类都可以实现特定的接口
public IList<T> CreateList<T>(Datatable table) where T : IInterface
公共IList CreateList(Datatable表),其中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;
}
列出FillListFromTable(DataTable DataTable),其中T:new()
{
列表=新列表();
foreach(dataTable.Rows中的DataRow行)
{
T项=新的T();
foreach(PropertyInfo vr在typeof(T).GetProperties()中)
{
if(dataTable.Columns.Contains(vr.Name))
{
vr.设定值(项目,
Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
退货清单;
}
你可以这样称呼它:
List<ItemMaster> itemMasterList = FillListFromTable<ItemMaster>(resp.DataSet.Tables[0]);
List itemMasterList=FillListFromTable(分别为DataSet.Tables[0]);
如果我理解正确,您似乎很难想出一个适用于任意项目类型的单一方法实现。如果这是正确的,那么在您的情况下,类似的方法可能会起作用:
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;
}
列出FillListFromTable(DataTable DataTable),其中T:new()
{
列表=新列表();
foreach(dataTable.Rows中的DataRow行)
{
T项=新的T();
foreach(PropertyInfo vr在typeof(T).GetProperties()中)
{
if(dataTable.Columns.Contains(vr.Name))
{
vr.设定值(项目,
Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
退货清单;
}
你可以这样称呼它:
List<ItemMaster> itemMasterList = FillListFromTable<ItemMaster>(resp.DataSet.Tables[0]);
List itemMasterList=FillListFromTable(分别为DataSet.Tables[0]);
如果我理解正确,您似乎很难想出一个适用于任意项目类型的单一方法实现。如果这是正确的,那么在您的情况下,类似的方法可能会起作用:
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;
}
列出FillListFromTable(DataTable DataTable),其中T:new()
{
列表=新列表();
foreach(dataTable.Rows中的DataRow行)
{
T项=新的T();
foreach(PropertyInfo vr在typeof(T).GetProperties()中)
{
if(dataTable.Columns.Contains(vr.Name))
{
vr.设定值(项目,
Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
退货清单;
}
你可以这样称呼它:
List<ItemMaster> itemMasterList = FillListFromTable<ItemMaster>(resp.DataSet.Tables[0]);
List itemMasterList=FillListFromTable(分别为DataSet.Tables[0]);
如果我理解正确,您似乎很难想出一个适用于任意项目类型的单一方法实现。如果这是正确的,那么在您的情况下,类似的方法可能会起作用:
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;
}
列出FillListFromTable(DataTable DataTable),其中T:new()
{
列表=新列表();
foreach(dataTable.Rows中的DataRow行)
{
T项=新的T();
foreach(PropertyInfo vr在typeof(T).GetProperties()中)
{
if(dataTable.Columns.Contains(vr.Name))
{
vr.设定值(项目,
Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
退货清单;
}
你可以这样称呼它:
List<ItemMaster> itemMasterList = FillListFromTable<ItemMaster>(resp.DataSet.Tables[0]);
List itemMasterList=FillListFromTable(分别为DataSet.Tables[0]);
只需使用泛型。作为奖励,您可以返回一个通用列表
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 ToList(数据集):new()
{
列表=新列表();
foreach(相应DataSet.Tables[0]中的DataRow行)
{
T项=新的T();
foreach(item.GetType().GetProperties()中的PropertyInfo vr)
{
if(resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(项,Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
}
只需使用泛型。作为奖励,您可以返回一个通用列表
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 ToList(数据集):new()
{
列表=新列表();
foreach(相应DataSet.Tables[0]中的DataRow行)
{
T项=新的T();
foreach(item.GetType().GetProperties()中的PropertyInfo vr)
{
if(resp.DataSet.Tables[0].Columns.Contains(vr.Name.ToString()))
{
vr.SetValue(项,Convert.ChangeType(行[vr.Name],vr.PropertyType),null);
}
}
列表。添加(项目);
}
}
只需使用泛型。作为一个