Я хотел бы реализовать простой (только для тестирования) в репозитории памяти, как показано ниже. Интерфейсы, которые он реализует, являются общими. Один из методов «Удалить» используется в примере кода ниже.Использование generic func signature
Бросок предиката исключает. Как я могу реализовать удаленный метод правильно?
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> предикат)'? –
Мои интерфейсы подобны ниже, вот почему ... public interface IUpdateModel { void Сохранить (T dto) где T: class, IDto; void Обновить (объект T), где T: class, IDto; void Удалить (выражение > предикат), где T: class, IDto; void Удалить (объект T), где T: class, IDto; } общественный интерфейс IUpdateModel где T: IDto { void Save (T dto); void Update (объект T); void Удалить (выражение > предикат); void Удалить (объект T); } –