您好我试图实现一个通用的SQlite存储库。
这将使我的编码更容易,但我遇到一些困难或者可能做错了。
为了说明我的目的,我得到了我的模型类。在继承树下面。
ModelBase(摘要)
- ModelBaseID(公共 int ID属性主键)
- ModelBaseGUID(公共 Guid GUID属性主键)
我的所有模型类都将从ModelBaseID继承,取决于我需要的主键类型。
在我的通用存储库
下面 public class SQLiteRepository<T> where T : class, new()
{
...
public async Task<T> GetItemAsync(object id, CancellationToken cancellationToken)
{
T x = null;
if (id is int)
{
int intID = (int)id;
try
{
x = await database.Table<T>().Where(item => (item as ModelBaseID).ID == intID).FirstOrDefaultAsync();
}
catch (Exception ex)
{
throw;
}
}
else if (id is Guid)
{
Guid GuidID = (Guid)id;
try
{
x = await database.Table<T>().Where(item => (item as ModelBaseGUID).GUID == GuidID).FirstOrDefaultAsync();
}
catch (Exception ex)
{
throw;
}
}
我有错误 - &gt;无法编译:TypeAs由于我的Where cast表达式。关于这个问题的优雅解决方案的任何想法?