c# - T 的 C# 铸造泛型
问题描述
我有以下方法:
private void SaveCatalog<T>(T data)
{
// Open database (or create if doesn't exist)
using (var db = new LiteDatabase(@"database.db"))
{
string tableName = null;
switch (cboCatalogs.Text.ToLower())
{
case "area":
tableName = "setup_area";
break;
case "department":
tableName = "setup_department";
break;
}
// error: data is a variable but is used as a type
var col = db.GetCollection<data>(tableName);
// error: data is a variable but is used as a type
var records = data as BindingList<data>;
col.Insert(records);
}
}
我在这里做错了什么。 T data
可以是 Models.SetupArea 或 Models.SetupDepartment 类型,也可以是任何实际的东西。
有什么线索可以解决吗?
解决方案
做:
var col = db.GetCollection<T>(tableName);
var records = data as BindingList<T>;
您需要将类型放在那里,而不是变量。
推荐阅读
- python - 在 Cython cdef 类中定义自定义类
- r - R中时间序列数据的增长率
- javascript - Axios 在创建时返回 405 错误(Laravel+Vue)
- python-3.x - requests_oauthlib 是否默认缓存,我什至应该缓存吗?
- python - 计算文本文件中列表中字符串的出现次数
- sql-server - 使用 LINQ-to-SQL 将 ASP.NET Web 窗体应用程序迁移到 SQL Server 2016 后的性能问题
- c# - 两支数据流网络不完整
- python - 数字签名验证失败
- python - PyPy 找不到包
- amazon-web-services - aws cloudwatch 日志过滤器模式包括匹配模式之前和/或之后的行