我坚持一个泛型问题 . 我有一个方法,根据对象类型从DbContext对象返回DbSet .
现在我想编写I方法,其中传入一个实现名为IBaseData的接口的对象(所有实体都实现) . 我想使用现有的方法根据IBaseData对象的类型返回正确的DbSet,但我无法让它工作 .
我尝试过各种版本的typeof和gettype .
Existing method :
public GenericRepository<T> GetRepo<T>() where T : class
{
return new GenericRepository<T>(_context);
}
New method (this is just what Im trying to do) :
public async Task SetDateLastInvoked<T>(IBaseData data, int id)
{
var tmp = GetRepo<typeof(data)>().Where(obj => obj.Id.Equals(id));
tmp.DateLastInvoked = DateTime.Now;
await SaveChangesAsync();
}
2 回答
我假设你做的事情如下:
然后一个方法会像
用法:
基于之前的回答,结束了这一点:
我还创建了另一种基于相同模式的方法: