У меня есть служба wcf, которая берет IRepository
IRepository irepo;
public SomeService(IRepository repo)
{
this.irepo = repo;
}
Репозитории содержат методы, такие как Save, Delete и т. Д., И принимают CustomDataContext через конструктор:
public class ExampleRepository: IRepository, IDisposible {
public ExampleRepository(CustomDataContext datacontext)
{
this.dc = datacontext;
}
...
}
Позже в сервисе у меня есть несколько методов, которым нужно будет использовать репозиторий (и позже избавиться от него в методе). Теперь, когда я хочу использовать Dependency Injection, чтобы отключить репозитории для тестирования, а не для тестирования, как мне объявить конкретный репозиторий. Я мог бы создать новый экземпляр хранилища следующим образом:
using (IRepository repos = (IRepository)Activator.CreateInstance(irepo.GetType(), new object[] {new CustomDataContext()} ))
{
...
}
но я предполагаю, что это медленный (и неправильный) способ сделать это
Есть ли способ сделать новый репозиторий, основанный на введенном типе, или я просто усложняю то, что необходимо?
Заранее спасибо