我正在尝试创建一个通用的缓存类,它将保存一系列对象,并公开一种方法,该方法可以基于Id属性检查对象实例是否已经被缓存:
public class CacheService<T> where T : BaseModel
{
private List<T> _data = new List<T>();
public void Check(T obj)
{
if (_data.Contains(r => r.Id.Equals(obj.Id))
{
//Do something
}
}
}
public class BaseModel
{
public int Id { get; set; }
}
在Contains()
命令中,我遇到了编译器错误,错误提示如下:
无法将lambda表达式转换为类型“T”,因为它不是委托类型
我该怎么做才能实现我的目标呢?
Contains
接受一个可能的元素来搜索,而不是一个谓词。 - Eric Lippert