Это потому что Т не определено. Компилятор попытается найти тип с именем T
, который не существует. Попробуйте изменить подпись вашего интерфейса на:
public interface ISession<T> : IDisposable
Если вы не хотите, чтобы весь интерфейс был универсальным, вы можете добавить к каждому методу, например:
Save<T>(T item)
На самом деле, именно этим и занимается автор этого кода, посмотрите на его класс реализации Db4oSession
по предоставленной вами ссылке. Правильное определение интерфейса должно быть:
public interface ISession : IDisposable
{
void CommitChanges();
Db4objects.Db4o.IObjectContainer Container { get; }
void Delete<T>(System.Linq.Expressions.Expression<Func< T, bool>> expression);
void Delete(object item);
void DeleteAll();
void Dispose();
T Single<T>(System.Linq.Expressions.Expression<Func< T, bool>> expression);
System.Linq.IQueryable All();
void Save<T>(T item);
}