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对问题的评论中所建议的那样。