У меня есть класс, RepositoryManager
, и я использую этот класс в некоторых моих контроллерах:
public RepositoryManager
{
public IGenericRepository Repository {get; set;}
public RepositoryManager()
{
Repository = new GenericRepository(new MyEntities());
}
//...
}
Я хочу переместить IGenericRepository в StructureMap Инверсия элемента управления (IoC), контейнер
x.For<IGenericRepository>().Use<GenericRepository>().Ctor<MyEntities>("MyEntities");
Затем я изменяю свой конструктор класса следующим образом:
public RepositoryManager(IGenericRepository repository)
{
Repository = repository;
}
Но инъекция не сработала. Я также пытался использовать атрибут [SetterProperty]
в репозитории, но репозиторий все еще не создавался.
Что я сделал не так?
Моя полная инициализация IoC:
public static class IoC {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
x.For<IRepositoryManager>().Use<RepositoryManager>();
x.For<IGenericRepository>().Use<GenericRepository>().Ctor<MyEntities>("MyEntities");
});
return ObjectFactory.Container;
}
}