2009-12-22 6 views
0

Я новичок в IOC и strcturemap, но я хочу знать, как я могу зарегистрировать разные классы, которые реализуются из того же интерфейса, что и IRepository, который реализует CustomerRepository и CategoryRepository, например. И, как вы можете видеть, если я могу использовать это с родовыми типами. Как Repository или RepositoryОбщая структура структуры хранилища Вопрос IOC

x.ForRequestedType<IRepository<Category>>().TheDefault.Is.OfConcreteType<IRepository<Category>>(); 

попробовал этот бит Это не worked..any помощи whould быть оценена!

+0

Я не знаю, как StructureMap работает точно, но я бы с удовольствием написал 'Is.OfConcreteType > '. 'Repository',' Repository', 'Repository', а не' IRepository'. – LukLed

ответ

2

При настройке StructureMap вы можете использовать Scan API для автоматической регистрации закрытых типов.

Scan(x => 
{ 
    x.TheCallingAssembly(); 
    x.ConnectImplementationsToTypesClosing(typeof(IRepository<>)); 
}); 

Эта функция в последнем стволу, но я не уверен, если это какая-то выпущена версия, и все же, вероятно, не в официальной документации. Однако есть хороший blog post that explains it.

0

Нет экземпляра по умолчанию для PluginFamily MVCPoco.Data.IRepository`1 [[MVCPoco.Core.Category, MVCPoco.Core, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null]], MVCPoco.Data, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null

получил последнюю версию ... проект запускается, но когда я впрыскиваю в конструкторе IRepository, он дает мне эту ошибку.

+0

Мне нужно зарегистрировать ir? имя репозитория - Repository.cs ... Я не понимаю, что я делаю неправильно! – diego

+0

Я столкнулся с той же проблемой, убедитесь, что класс, который он не может найти, является общедоступным. – Andrew

Смежные вопросы