Я использую шаблон репозитория, найденный в ответе на этот вопрос SO:
Преимущество создания общего репозитория против конкретного репозитория для каждого объекта?
А именно, каждый репозиторий наследуется от абстрактного базового класса, который содержит общие методы, такие как добавление, удаление и т.д., а также реализует определенный интерфейс репозитория для любых методов, которые являются уникальными для этого репозитория/сущности.
т.
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>
). Каков обычный способ сделать это?