0

WCF Web API を使用して REST API を公開する MVC3 Web サイトを作成しています。

REST API へのルートを登録するには、以下のコードのようなコードを Global.asax に追加します。

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

これは十分に機能しますが、サービスが依存する依存関係を注入するには、DI アプローチを使用する必要があります。上記のコードでわかるように、MVC フレームワークは RelationsService のインスタンスを作成していますが、これは DI コンテナーで行う必要があります。

サービスのインスタンスの作成に独自の DI コンテナーが使用されるように MVC3 を構成する方法を知っている人はいますか?

4

1 に答える 1

1

IResourceFactory で作成された IHttpHostConfigurationBuilder を使用して、現在のサービス登録呼び出しを拡張する必要があります。

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);
    }
}
于 2011-07-19T10:46:21.683 に答える