我已经生成了一个需要添加到SQLite数据库中的公共类列表。
我得到了像这个这样的类名
private List<Type> types = new List<Type>();
...
var pathName = Directory.GetFiles(string.IsNullOrEmpty(dirPath) ? "SQLClasses" : dirPath);
foreach (var path in pathName)
types.AddRange(Assembly.LoadFrom(path).GetTypes());
类型现在包含我的类,这些类需要转换为SQLite表。
通常,我会创建这样的表
using (SQLiteConnection sqlCon = new SQLiteConnection(DBPath))
{
sqlCon.CreateTable<TableName>();
由于我已经有了以类型保存的类列表,我正试图使用简单的foreach 将这些表插入数据库
目前我有这个
foreach(var t in types)
{
var T = Activator.CreateInstance(t);
sqlCon.CreateTable<T>();
}
既不是这个也不是更简单的
sqlCon.CreateTable<typeof(t)>();
或
sqlCon.CreateTable<t>();
功(三个给定的T[或T]在当前上下文中不存在(
我可以使用这个简单的foreach方法插入表名吗?还是必须做一些更复杂的事情?
答案是CreateTable有两个重载方法
sqlCon.CreateTable<T>();
和
sqlCon.CreateTable(t);
第二个允许使用类型而不是使用T的泛型类。我不知道第二种方法,直到我在一个网站上注意到一些模糊的参考资料,而不是提到第二种方式,但没有说明它是什么。四处挖掘发现了这个。
我很抱歉没有在早些时候提供更完整的答案