目前我正在尝试创建一个通用类来创建一个可以将类或接口作为T的表。这是我到目前为止所拥有的:
public class MobileDataBase<T> where T : new()
{
SQLiteConnection database;
public MobileDataBase()
{
database.CreateTable<T>();
}
}
当我像这样将一个类输入它时,这很好用:
MobileDataBase<MyClass> database = new MobileDataBase<MyClass>();
但是给了我错误:
必须是非抽象类型,其中包含公共无参数构造函数 为了在泛型类型或方法中使用它作为参数
如果我给它参数
MobileDataBase<IMyInterface> database = new MobileDataBase<IMyInterface>();
我使用接口的原因是因为我有两个继承此接口的对象,我想将它们的信息存储在同一个表中,而不是两个单独的...
我还想将泛型类MobileDataBase
用于其他不从IMyInterface
继承的类:
public class MobileDataBase<T> where T : IMyInterface
不是解决方案
答案 0 :(得分:1)
这是解决这个问题的方法:
所以MyClass : IMyInterface
但当我尝试将界面IMyInterface
反馈到我的通用方法时会出现问题,而该方法又会调用CreateTable<T>()
所以这就是我所做的。我创建了一个名为MyBaseClass
的基类并实现了它而不是接口..
MyClass : MyBaseClass
现在我可以将MyBaseClass
传递给泛型方法没问题。如果您仍然想使用该接口,您可以使MyBaseClass实现接口,如下所示:
MyBaseClass : IMyInterface
使用
时除此之外database.Insert(object, type)
像
一样使用它database.Insert(MyClass,typeof(MyBaseClass)