4

MVC3 に戻ると、ControllerFactory(ビジネス ロジックによって抽象化された) 独自のコンテナーを使用してコントローラーをインスタンス化し、必要なサービスを渡すというカスタムがありました。

new を使用して、MVC4 で同様のものを実装しようとしていApiControllerます。

Core.DependencyResolverFactory.Resolverを返す静的/共有メソッドがありますIDependencyResolver。これには、多数のResolve(...)andResolveAll(...)メソッドとオーバーロードがあります。

だから...どうすればMVC4で同じことを実装できますか?

独自の ServiceLocator を設定しようとしましたがMicrosoft.Practices.ServiceLocation.IServiceLocator、どのフレームワーク アセンブリにもインターフェイスが見つかりません。

基礎となるコンテナーは既に BL によって抽象化されているため、コンテナーに結び付けられることについてあまり心配していません。実際には、クラスを MVC の DI に挿入するための迅速で汚れた方法が必要なだけです。

誰かが私に良いチュートリアルを教えてもらえますか?

現時点で持っているものは....

Sub Application_Start()
    ...Snip...

    'Suggested in the link on jrummel's answer...
    GlobalConfiguration.Configuration.DependencyResolver = New WebResolver
    'It fails due to DependencyResolver not being defined


    'I do have a 
    GlobalConfiguration.Configuration.ServiceResolver = New WebResolver
    'but it's read-only and it is of type System.Web.Http.Services.DependencyResolver not IDependencyResolver

End Sub

Private Class WebResolver
    Implements IDependencyResolver

    Private Resolver As Common.Interfaces.IDependencyResolver = Core.DependencyResolverFactory.QuickResolver

    Public Function GetService(serviceType As Type) As Object Implements IDependencyResolver.GetService
        Return Resolver.Resolve(serviceType)
    End Function

    Public Function GetServices(serviceType As Type) As IEnumerable(Of Object) Implements IDependencyResolver.GetServices
        Return Resolver.ResolveAll(serviceType)
    End Function
End Class
4

1 に答える 1

3

IDependencyResolverASP.NET Web API ベータ版には、MVC とは別に、独自の が付属しています。

asp.net にチュートリアルがあります: Using the Web API Dependency Resolver

NuGet から ServiceLocatorを取得できます。

于 2012-06-13T14:49:23.513 に答える