У меня есть следующий класс:
public class InMemoryRepository : IRepository
{
public void Add(object entity)
{
throw new NotImplementedException();
}
public void Attach(object Entity)
{
throw new NotImplementedException();
}
public T Get<T>(object id)
{
throw new NotImplementedException();
}
public IList<T> GetAll<T>(string queryName)
{
throw new NotImplementedException();
}
public IList<T> GetAll<T>()
{
throw new NotImplementedException();
}
public IQueryable<T> Query<T>()
{
throw new NotImplementedException();
}
public void Remove(object entity)
{
throw new NotImplementedException();
}
public void Save(object entity)
{
throw new NotImplementedException();
}
}
Наша реализация репозитория по умолчанию использует NHibernate для резервного хранилища, но я хотел бы реализовать его версию в памяти, чтобы я мог создавать прототипы объектов доменабез необходимости создавать резервную базу данных SQL.Предполагая, что все объекты имеют свойство Id в качестве первичного ключа, как бы вы реализовали общее хранилище памяти для этого?
Некоторые ключевые моменты, с которыми мне трудно обращаться:
- Сами методы репозитория являются общими, поэтому мне нужен механизм для автоматического хранения и ссылки на различные типы.
Get<TestEntity>(object id)
должен иметь возможность запрашивать все сохраненные экземпляры TestEntity и находить экземпляр с соответствующим свойством Id, но я не могу определить коллекцию объектов TestEntity напрямую, так как хранилище не будет знать, какие типы я передаю.до времени выполнения. - Мне нужно поддерживать LINQ to Objects для метода Query ().Предполагая, что я могу придумать достойный способ хранения объектов, это должно быть так же просто, как возвращать массив хранимых объектов AsQueryable ().
Как бы вы хранили объекты для удовлетворения вышеуказанных требований