Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于函数创建对象列表';s参数_C#_.net_C# 4.0 - Fatal编程技术网

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);
}
}
列表。添加(项目);
}
}
只需使用泛型。作为一个