Как включить внедрение зависимостей для ServiceRoute в MVC3 и WCF Web API - PullRequest
0 голосов
/ 19 июля 2011

Я создаю веб-сайт MVC3, который будет предоставлять API REST с использованием веб-API WCF.

Чтобы зарегистрировать маршруты к API REST, я добавляю код в Global.asax, аналогичный приведенному ниже.

routes.MapServiceRoute<RelationsService>("relations");

Это работает достаточно хорошо, но мне нужно использовать подход DI, чтобы внедрить зависимости, от которых зависит Сервис.Как вы можете видеть из приведенного выше кода, инфраструктура MVC создает экземпляр RelationsService, но это должно быть сделано контейнером DI.

Кто-нибудь знает, как настроить MVC3 так, чтобы мой собственный контейнер DI использовался длясоздание экземпляров Сервисов?

1 Ответ

1 голос
/ 19 июля 2011

Вы должны расширить текущий вызов регистрации службы с помощью IHttpHostConfigurationBuilder, который был создан с помощью IResourceFactory.

var configurationBuilder = HttpHostConfiguration.Create()
    .SetResourceFactory(new ResourceFactory());

routes.MapServiceRoute<RelationsService>("relations", configurationBuilder);

Тогда, если вы, например, используете StructureMap в качестве предпочтительного инструмента IoC / DI, вы можете просто запросить службу в методе GetInstance.

public class ResourceFactory : IResourceFactory
{
    public object GetInstance(Type serviceType, InstanceContext instanceContext, HttpRequestMessage request)
    {
        return ObjectFactory.GetInstance(serviceType);
    }
}
...