2012-09-08 4 views
5

AppHostクラスでは、すべてのメソッドの上書きがFunqコンテナを使用します。私は私のASP.NET MVCアプリ内でAutofacを使用しています(私はSSをMVCアプリケーションでサイドバイサイドで実行します)。ServiceStack Funq IoCの置き換え

  1. 代わりに、global.asax.csからのAutofac登録を使用する方法がありますか、これを置き換えるには余計ですか?
  2. IはAPPHOST

    //ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(容器))でこの行をコメントアウト。

私のAutofacパワードコントローラーを台無しにしていたからです。これは、AutofacとFunqがアプリ内で問題を起こすのを防ぐのに十分ですか?あるいは、FunqはデフォルトでDependencyResolverに設定されていますか?

+0

FunqControllerFactoryのIMPLはここに役立つかもしれない:https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.FluentValidation.Mvc3/Mvcない代替IContainerAdapterについてはこちらを参照してください。 /FunqControllerFactory.csは、ここでSocialBootstrapApiで使用されています:https://github.com/ServiceStack/SocialBootstrapApi/blob/master/src/SocialBootstrapApi/App_Start/AppHost.cs#L131 FunqControllerFactoryよりもMVC + FunqとのIOC統合はありません – mythz

答えて

9

FuncとAutoFacを併用することができます。 ServiceStackでは、funcにAutoFacアダプタを使用するよう指示します。このページでは、さまざまなIoCコンテナを使用する方法について説明します。また、AutofacIocAdapterクラスのコードも提供します。 https://github.com/ServiceStack/ServiceStack/wiki/The-IoC-container

public class AutofacIocAdapter : IContainerAdapter 
{ 
    private readonly IContainer _container; 

    public AutofacIocAdapter(IContainer container) 
    { 
     _container = container; 
    } 

    public T Resolve<T>() 
    { 
     return _container.Resolve<T>(); 
    } 

    public T TryResolve<T>() 
    { 
     T result; 

     if (_container.TryResolve<T>(out result)) 
     { 
      return result; 
     } 

     return default(T); 
    } 
} 

は、その後、あなたがこのアダプタを有効にする必要がありAPPHOST設定(コンテナコンテナ)メソッドで:

//Create Autofac builder 
var builder = new ContainerBuilder(); 
//Now register all depedencies to your custom IoC container 
//... 

//Register Autofac IoC container adapter, so ServiceStack can use it 
IContainerAdapter adapter = new AutofacIocAdapter(builder.Build()) 
container.Adapter = adapter; 
関連する問題