c# - 使用泛型函数测试模型列表是否有任何条目或为空的问题
问题描述
我正在尝试使用通用函数来简化一些代码......该函数的目的是测试传递给它的列表(通常是模型列表)是否有任何条目或为空......当我尝试使用我编写的函数,它给了我错误:
该类型
List<FooBarModel>
不能用作泛型类型或方法中的类型参数“T”HasEntries<T>(T)
。没有从List<FooBarModel>
到的隐式引用转换List<List<FooBarModel>>
...
我不太确定如何适当地编写通用函数......
我的功能如下:
private static bool HasEntries<T>(T toTest) where T : List<T>
{
return toTest?.Any() ?? false;
}
我通过执行以下操作来调用它:
if (PricingPublicationController.HasEntries(weeWoo))
{
// code code code
}
weeWoo 的类型在哪里:
List<FooBarModel>();
编辑:澄清一下, FooBarModel 和其他代替 T 的东西通常是 MVC 的类模型
解决方案
您的泛型类型约束是错误的。
where T : List<T>
意思是:T
必须是一个List
。T
但实际上你T
是一个List
of的东西,而不是of的T
。
这是一个更好的解决方案:
bool HasEntries<T>(T toTest) where T : IList
{
return toTest?.Count > 0;
}
它甚至更快,因为它Count
直接使用该属性,而无需 LINQ。
推荐阅读
- go - Go - GCP 列出没有用户的磁盘(即未附加)
- excel - 使用特定标准浏览数据表
- database - 更改图像文件夹路径
- javascript - Angular 指令不适用于 ng-container
- python - 使用日期时间python条件
- python - 在没有互联网连接的机器中使用 Conda-Pack 包
- deployment - 无服务器:OperationalError:ENOENT:没有这样的文件或目录,scandir '.serverless/requirements'
- maven - 什么配置或变量导致 Aritfactory 用时间戳替换“-SNAPSHOT”
- reactjs - DeleteOne by _id Mongodb
- javascript - Why is my string getting repeatedly in this function?