У меня есть интерфейс 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
На что похож ваш конструктор для GenericRepository <>
?
Он или одна из его зависимостей ожидает DbConnection
, которую SM не может создать.
Вы получаете в конструкторе вашего GenericRepository DbConnection, который является абстрактным классом, и не конфигурируете SM, чтобы узнать, какой конкретный класс следует использовать для этого.
i.e.:
ObjectFactory.Initialize(x =>
{
x.For(typeof(DbConnection)).Use(typeof(SqlConnection));
x.For(typeof(IGenericRepository<>)).Use(typeof(GenericRepository<>));
});