我想在内存资源库中实现一个简单的(仅用于测试目的),如下所示。它实现的接口是通用的。下面的示例代码使用了其中一种“删除”方法。使用泛型func签名
谓词转换抛出异常。我如何正确实施删除的方法?
public class InMemoryReportingRepository : IReportingRepository
{
private readonly List<IDto> m_dtos;
public InMemoryReportingRepository()
{
m_dtos = new List<IDto>();
}
// ommitted stuff
public void Delete<TEntity>(Expression<Func<TEntity, bool>> predicate) where TEntity : class, IDto
{
var delete = m_dtos.FirstOrDefault((Func<IDto, bool>) predicate.Compile());
m_dtos.Remove(delete);
}
}
为什么不直接使用'public void Delete(Expression>谓词)'? –
2012-01-13 17:02:55
我的界面如下所示,这就是为什么... public interface IUpdateModel { void Save(T dto)其中T:class,IDto; void更新(T实体)其中T:class,IDto; void删除(表达式> predicate)其中T:class,IDto; void删除(T实体)其中T:class,IDto; } public interface IUpdateModel 其中T:IDtovoid Save(T dto); void Update(T entity); void删除(Expression > predicate); void删除(T实体); } –
2012-01-13 18:20:00