C# 转换列表<;T>;列出<;myType>;

C# 转换列表<;T>;列出<;myType>;,c#,asp.net,C#,Asp.net,调用任何转换函数时出现错误: Argument 2: cannot convert from 'System.Collections.Generic.List<T>' to 'System.Collections.Generic.List<ProductionRecent> 参数2:无法从“System.Collections.Generic.List”转换为“System.Collections.Generic.List” 我试图传递函数中的任何列表,确定它必须是哪

调用任何转换函数时出现错误:

Argument 2: cannot convert from 'System.Collections.Generic.List<T>' to 'System.Collections.Generic.List<ProductionRecent>
参数2:无法从“System.Collections.Generic.List”转换为“System.Collections.Generic.List”
我试图传递函数中的任何列表,确定它必须是哪个列表并转换它。有什么建议吗

    public List<T> ConvertToList<T>(DataTable dt, List<T> list)
    {
        if (list.GetType() == typeof(List<ProductionPending>))
        {                
            ConvertToProductionPending(dt, list);   // ERROR
        }
        else if (list.GetType() == typeof(List<ProductionRecent>))
        {
            ConvertToProductionRecent(dt, list);   // ERROR
        }
        else if (list.GetType() == typeof(List<MirrorDeployments>))
        {
            ConvertToMirror(dt list);   // ERROR
        }
        return list;
    }

    private List<ProductionPending> ConvertToProductionPending(DataTable dt, List<ProductionPending> list)
    {
          // do some stuff here
          return list;
    }

    private List<ProductionRecent> ConvertToProductionRecent(DataTable dt, List<ProductionRecent> list)
    {
        // do some stuff here
        return list;
    }
    private List<MirrorDeployments> ConvertToMirror(DataTable dt, List<MirrorDeployments> list)
    {
        // do some stuff here
        return list;
    }
公共列表转换器列表(数据表dt,列表列表)
{
if(list.GetType()==typeof(list))
{                
ConvertToProductionPending(dt,list);//错误
}
else if(list.GetType()==typeof(list))
{
ConvertToProductionRecent(dt,list);//错误
}
else if(list.GetType()==typeof(list))
{
ConvertToMirror(dt列表);//错误
}
退货清单;
}
私有列表ConvertoProductionPending(数据表dt,列表列表)
{
//在这里做些事情
退货清单;
}
私有列表ConvertProductionRecent(数据表dt,列表列表)
{
//在这里做些事情
退货清单;
}
私有列表转换器镜像(数据表dt,列表)
{
//在这里做些事情
退货清单;
}

在传递给您的方法之前尝试强制转换:

public List<T> ConvertToList<T>(DataTable dt, List<T> list)
{
    if (list.GetType() == typeof(List<ProductionPending>))
    {                
        ConvertToProductionPending(dt, (list as List<ProductionPending>)); 
    }
    else if (list.GetType() == typeof(List<ProductionRecent>))
    {
        ConvertToProductionRecent(dt, (list as List<ProductionRecent>));   
    }
    else if (list.GetType() == typeof(List<MirrorDeployments>))
    {
        ConvertToMirror(dt, (list as List<MirrorDeployments>));
    }
    return list;
}
公共列表转换器列表(数据表dt,列表列表)
{
if(list.GetType()==typeof(list))
{                
ConvertToProductionPending(dt,(以列表形式列出));
}
else if(list.GetType()==typeof(list))
{
ConvertToProductionRecent(dt,(以列表形式列出));
}
else if(list.GetType()==typeof(list))
{
转换器镜像(dt,(列表为列表));
}
退货清单;
}
编辑:

此外,如果您只是返回列表而不做任何操作,则根本不需要convert方法,只需像
list l2=(list as list)

如果您使用的是C#7,还可以使用:

公共列表转换器列表(数据表dt,列表列表)
{
交换机(列表)
{
案例列表第页:
//pp是列表转换为列表
打破
病例表pr:
//公关是名单演员名单
打破
病例列表:
//md是列表强制转换为列表
打破
}
退货清单;
}

在传递给您的方法之前尝试强制转换:

public List<T> ConvertToList<T>(DataTable dt, List<T> list)
{
    if (list.GetType() == typeof(List<ProductionPending>))
    {                
        ConvertToProductionPending(dt, (list as List<ProductionPending>)); 
    }
    else if (list.GetType() == typeof(List<ProductionRecent>))
    {
        ConvertToProductionRecent(dt, (list as List<ProductionRecent>));   
    }
    else if (list.GetType() == typeof(List<MirrorDeployments>))
    {
        ConvertToMirror(dt, (list as List<MirrorDeployments>));
    }
    return list;
}
公共列表转换器列表(数据表dt,列表列表)
{
if(list.GetType()==typeof(list))
{                
ConvertToProductionPending(dt,(以列表形式列出));
}
else if(list.GetType()==typeof(list))
{
ConvertToProductionRecent(dt,(以列表形式列出));
}
else if(list.GetType()==typeof(list))
{
转换器镜像(dt,(列表为列表));
}
退货清单;
}
编辑:

此外,如果您只是返回列表而不做任何操作,则根本不需要convert方法,只需像
list l2=(list as list)

如果您使用的是C#7,还可以使用:

公共列表转换器列表(数据表dt,列表列表)
{
交换机(列表)
{
案例列表第页:
//pp是列表转换为列表
打破
病例表pr:
//公关是名单演员名单
打破
病例列表:
//md是列表强制转换为列表
打破
}
退货清单;
}

我建议创建多个单独的方法,而不是尝试使用泛型。如果该方法要转换,则返回
列表是完全无用的。返回类型仍然是泛型的,这是完全无用的。除非您实际上没有问真正的问题,并且您想要的是基于
数据表
生成不同的特定类型的
列表
,这是参数,否则我建议创建多个单独的方法,而不是尝试使用泛型。如果方法用于转换。返回类型仍然是泛型的,这是完全无用的。除非您实际上没有问真正的问题,并且您想要的是基于
数据表
生成不同的特定类型的
列表
,该表是
转换器列表
的参数而不是以通用方式编写的
转换器列表
(它只是为每个有意义的类型
t
)的一部分,只需创建三个非通用重载
ConvertToList(DataTable dt,List)
ConvertToList(DataTable dt,List)
ConvertToList(DataTable dt,List List)
,正如mjwills在对问题的评论中所建议的那样。而不是以非通用方式编写的
ConvertToList
(它只为每个有意义的类型
T
)创建一个部分,只需创建三个非泛型重载
ConvertToList(DataTable dt,List)
ConvertToList(DataTable dt,List List List)
,正如mjwills对问题的评论中所建议的那样。