Я использую шаблон хранилища, найденный в ответе на этот вопрос SO:
Преимущество создания общего хранилища по сравнению с конкретным хранилищем для каждого объекта?
А именно, каждый репозиторий наследует от абстрактного базового класса, который содержит универсальные методы, такие как add, delete и т. Д., А также реализует специальный интерфейс репозитория для любых методов, уникальных для этого репозитория / сущности.
, т.е..
public class CompanyRepository : Repository<Company>, ICompanyRepository {
...
}
На своем бизнес-уровне я использую Structure Map для получения экземпляра хранилища, но я не уверен, как его использовать.
// Structure Map initialisation
ObjectFactory.Initialize(
x =>
{
x.For<ICompanyRepository>().Use<CompanyRepository>();
});
разрешение экземпляра:
return ObjectFactory.GetInstance<ICompanyRepository>();
Однако экземпляр, который я получаю, является интерфейсом, а не всей реализацией репозитория.У меня нет доступа к методам базового класса (Repository<Company>
).Как обычно это сделать?