StructureMap с ASP.NET MVC - метод configure () устарел? - PullRequest
1 голос
/ 08 апреля 2009

Я переопределил DefaultControllerFactory с помощью CustomControllerFactory, который фактически использует StructureMAp ObjectFactory для создания экземпляра контроллера с использованием IOC. Но кое-как он не может найти экземпляры Контроллера и не справиться с ним. Заметка. Я уже установил DEfaultControllerFactory в Global.asax тоже. Так что я должен сделать что-то еще, кроме регистрации моего реестра на SM.

Я понимаю, что регистрация контроллеров решает проблемы, но мне интересно, почему он не может обнаружить контроллер автоматически, как defaultFactory?

Ответы [ 2 ]

3 голосов
/ 09 апреля 2009

Вот так выглядит фабрика контроллеров:

public class ControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(Type controllerType)
    {
        if (controllerType != null)
        {
            return (IController)ObjectFactory.GetInstance(controllerType);
        }
        return null;
    }
}

Документ конфигурации StructureMap:

public class DependencyRegistry : Registry
{
    protected override void configure()
    {
        Scan(x =>
                 {
                     x.Assembly("MyApp.Web");
                     x.Assembly("MyApp.Model");
                     x.Assembly("MyApp.DataAccess");
                     x.With<DefaultConventionScanner>();
                 });
        base.configure();
    }

}

Функция, которая настраивает StructureMap, используя соглашения по умолчанию:

public void RegisterDependencies()
    {
        ObjectFactory.Initialize(InitializeStructureMap);
    }

    private void InitializeStructureMap(IInitializationExpression x)
    {
        x.AddRegistry<DependencyRegistry>();
    }

Пример контроллера:

public class MyController : Controller
{
    private IMyRepository _repository;

    public MyController (IRepository repository)
    {
        _repository = repository;
    }
}

Не забудьте вызвать функцию RegisterDependencies () ...

Надеюсь, это поможет.

0 голосов
/ 08 апреля 2009

Вы зарегистрировали контроллеры в Structuremap? (с учетом регистра)

...