C#T型铸造通用件
我有以下方法:C#T型铸造通用件,c#,generics,C#,Generics,我有以下方法: private void SaveCatalog<T>(T data) { // Open database (or create if doesn't exist) using (var db = new LiteDatabase(@"database.db")) { string tableName = null;
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);
}
}
private void SaveCatalog(T数据)
{
//打开数据库(如果不存在,则创建)
使用(var db=new LiteDatabase(@“database.db”))
{
字符串tableName=null;
开关(cboCatalogs.Text.ToLower())
{
案例“区域”:
tableName=“设置区域”;
打破
案例“部门”:
tableName=“设置部门”;
打破
}
//错误:数据是变量,但用作类型
var col=db.GetCollection(tableName);
//错误:数据是变量,但用作类型
var记录=数据作为绑定列表;
列注(记录);
}
}
我做错了什么<代码>T数据可以是Models.SetupArea或Models.SetupDepartment类型,也可以是任何类型
有什么线索可以修复它吗?请执行以下操作:
var col = db.GetCollection<T>(tableName);
var records = data as BindingList<T>;
var col=db.GetCollection(tableName);
var记录=数据作为绑定列表;
您需要将类型放在那里,而不是变量。您应该使用
T
作为泛型类型参数,而不是data
非主题注释:T
是否派生自BindingList
如果不超过此值,则没有意义,因为记录
将始终为空,为什么没有设置正确的约束或使数据
绑定列表
是,这是。您应该使用T代替数据。