C# 如何将类型传递给sqlite网络表方法?

C# 如何将类型传递给sqlite网络表方法?,c#,sqlite-net,C#,Sqlite Net,我需要这样做: private void DoStuff(Type itemType) { var db = new SQLiteConnection(_dbPath); var items = db.Table<itemType>(); // do stuff here... db.Close(); } private void DoStuff(类型itemType) { var db=新的SQLiteConnection(_dbPath); va

我需要这样做:

private void DoStuff(Type itemType)
{
    var db = new SQLiteConnection(_dbPath);
    var items = db.Table<itemType>();
    // do stuff here...
    db.Close();
}
private void DoStuff(类型itemType)
{
var db=新的SQLiteConnection(_dbPath);
var items=db.Table();
//在这里做事。。。
db.Close();
}
但是,编译器会报告以下错误:“itemType是一个变量,但与类型一样使用”

表的方法签名使用泛型:

public TableQuery<T> Table<T>() where T : new()
public TableQuery Table(),其中T:new()

非常感谢您的帮助。

itemType是System.type类型的运行时变量,不是类型,所以这当然是胡说八道。泛型版本只有在编译时知道类型时才有意义,即

private void DoStuff(TableType itemType)
{
    var db = new SQLiteConnection(_dbPath);
    var items = db.Table<TableType>();
    // do stuff here...
    db.Close();
}
或者,您也可以使用泛型

private void DoStuff<T>() where T : new()
{
    var db = new SQLiteConnection(_dbPath);
    var items = db.Table<T>();
    // do stuff here...
    db.Close();
}
private void DoStuff(),其中T:new()
{
var db=新的SQLiteConnection(_dbPath);
var items=db.Table();
//在这里做事。。。
db.Close();
}

这取决于您的需要,在第一种情况下,每个类型都有一个重载,在第二种情况下,您有一个单一的方法,并且在更高的级别指定类型

什么是TableType?它在SQLite.cs中的任何地方都没有使用,VisualStudio也没有建议它可能是什么。我需要用任何类型的表调用DoStuff方法。这只是一个示例。它是一个为表建模的类,这样每个记录都可以“映射”到一个object,但我已经有了一系列用于映射/定义表的类。我需要能够使用这些类中的任何一个作为参数来调用DoStuff方法。因此,用泛型声明它,为什么这不是一个选项,您是否需要
Type
参数作为运行时变量?
void foo()where TOne:new()where TTwo:new()
如何使
DoStuff
泛型<代码>私有void DoStuff(){…db.Table();?
private void DoStuff<T>() where T : new()
{
    var db = new SQLiteConnection(_dbPath);
    var items = db.Table<T>();
    // do stuff here...
    db.Close();
}