Как я настраиваю StructureMap для использования универсального репозитория?

У меня есть интерфейс IGenericRepository<TEntity> where TEntity : IEntity и реализация GenericRepository<TEntity> where TEntity : Entity.

Я пытаюсь ввести определенное IGenericRepository<Section> в использование класса StructureMap:

    ObjectFactory.Initialize(x =>
        {
            x.For(typeof(IGenericRepository<>)).Use(typeof(GenericRepository<>));
        });

Но когда я пытаюсь использовать ObjectFactory.GetInstance<IGenericRepository<Section>>(); Я добираюсь:

Код исключения StructureMap: 202 Никаких Экземпляра по умолчанию не определяются для Системы PluginFamily. Данные. Распространенный. DbConnection

Какие-либо идеи, почему это или что я делаю неправильно?

Заранее спасибо,

Simon

8
задан simonjreid 14 May 2010 в 15:45
поделиться

2 ответа

На что похож ваш конструктор для GenericRepository <> ?

Он или одна из его зависимостей ожидает DbConnection , которую SM не может создать.

3
ответ дан 5 December 2019 в 11:23
поделиться

Вы получаете в конструкторе вашего GenericRepository DbConnection, который является абстрактным классом, и не конфигурируете SM, чтобы узнать, какой конкретный класс следует использовать для этого.

i.e.:

 ObjectFactory.Initialize(x =>
        {
            x.For(typeof(DbConnection)).Use(typeof(SqlConnection));
            x.For(typeof(IGenericRepository<>)).Use(typeof(GenericRepository<>));
        });
8
ответ дан 5 December 2019 в 11:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: