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代替数据。