I am reading the source code of subsonic 3.
in the file IRepository.cs I found the following:
public interface IRepository<T>
{
IQueryable<T> GetAll();
PagedList<T> GetPaged<TKey>(Func<T, TKey> orderBy, int pageIndex, int pageSize);
...many other lines
bool Load<T>(T item, Expression<Func<T, bool>> expression) where T : class, new();
bool Load<T>(T item, string column, object value) where T : class, new();
}
Notice the Load methods are defined as generic and their generic type names are the same as the generic type of the interface, which cause complier warnings.
My questions is: Are the Load methods really intended to be generic or it was a mistake? If the methods were intended to be generic, should we change the type name from “T” to something different like “E” in order to make the compiler happy?
They’re not supposed to be different – Load is supposed to work on the repos “type” so you can remove the definition there (I assume that’s what you’re doing)