Я пытаюсь создать свой первый общий репозиторий. Я начинаю с очень простых, но я не уверен, как подключить все это к целому и использовать его с помощью инжектора конструктора.
public class NhibernateRepo<T> : INhibernateRepo<T>
{
private readonly ISession session;
public NhibernateRepo(ISession session)
{
this.session = session;
}
public void Commit()
{
using (ITransaction transaction = session.BeginTransaction())
{
transaction.Commit();
}
}
public void Delete(T entity)
{
session.Delete(entity);
}
public void Update(T entity)
{
session.Update(entity);
}
public T Get(object id)
{
return session.Get<T>(id);
}
public T Load(object id)
{
return session.Load<T>(id);
}
public void ReadOnly(object entity, bool readOnly = true)
{
session.SetReadOnly(entity, readOnly);
}
public void Evict(object entity)
{
session.Evict(entity);
}
public object Merge(object entity)
{
return session.Merge(entity);
}
}
public interface INhibernateRepo<T>
{
void Commit();
void Delete(T entity);
void Update(T entity);
T Get(object id);
T Load(object id);
void ReadOnly(object entity, bool readOnly = true);
void Evict(object entity);
object Merge(object entity);
}
}
Теперь я хочу использовать это в своем слое обслуживания. Поэтому я пытался сделать
public MyServiceLayer(INhibernateRepo nhibernateRepo)
Но это не нравится, поэтому я попробовал
public MyServiceLayer(INhibernateRepo<T> nhibernateRepo)
но не смог найти T.
Так как мне это сделать? Я предполагаю, что выполнение связывания будет сложной задачей, поэтому я не уверен, как это сделать.