Вам не нужно <T>
в объявлениях FindAll, потому что они уже объявлены на уровне класса. Вы также можете пропустить некоторые операторы использования. И в строке QueryOver есть тире (-
). Следующее должно скомпилироваться в проекте .NET 3.5:
using System.Linq;
using NHibernate;
public interface IRepository<T> where T : class {
IQueryable<T> FindAll();
void Save(T obj);
}
public class RepositoryBase<T> : IRepository<T> where T : class {
protected ISession _session = null;
public RepositoryBase(ISession session) {
_session = session;
}
public void Save(T obj) {
_session.Save(obj);
}
public IQueryable<T> FindAll() {
return _session.QueryOver<T>().List<T>().AsQueryable();
}
}