Так что я подумал, что буду ловким и попробую это. Мне нужно обойти контекст, не обновляя его каждый раз, и уметь определять сопоставления (Entity Framework) - для этого мне нужно наследовать, а затем переопределить класс DbContext. Я бы хотел, чтобы он был подключен к любому контексту, в который я добавляю, вот что привело меня к этому. У меня есть интерфейс IRepository, который принимает (сущность) с вашими обычными подозреваемыми, и реализацию с зависимостью от IContextFactory ...
public interface IContextFactory<T> where T : DbContext
{
T Context { get; }
}
А на моем "EFRepository"
public class EFRepository<T, TContext> : IRepository<T> where T : class
where TContext : DbContext
{
public EFRepository(IContextFactory<TContext> contextFactory)
{
}
}
В моем отображении я выполнил одно из этих заданий ...
x.For(typeof(IContextFactory<>)).Use(typeof(ContextFactory<>));
x.For(typeof(IRepository<>)).Use(typeof(EFRepository<,>));
Хорошо, круто. В своих модульных тестах я пробую это так ...
var repository = ObjectFactory.GetInstance<EFRepository<Currency, EFContext>>();
var repository2 = ObjectFactory.GetInstance<IRepository<Currency>>();
Первый работает, без проблем. 2-й, я получаю удар с
Количество предоставленных универсальных аргументов не равно арности определения общего типа.
Имя параметра: экземпляр
Полагаю, это потому, что я не говорю structmap, какой тип передать в IRepository, когда я передаю 2? Как я могу это сделать? ... я могу это сделать?