2013-04-23 43 views
1

我們有一個現有的MVC3項目並使用Autofac進行DI。ServiceStack - 如何使用現有的IOC?

要提供RESTful服務,我們打算使用ServiceStack。我們如何讓ServiceStack使用初始化autofac的現有Bootstrapper.cs?

我們現有Bootrapper.cs:

public static class Bootstrapper 
    { 
     public static ContainerBuilder builder; 
     public static void Initialise() 
     { 
      builder = new ContainerBuilder(); 
      builder.RegisterControllers(typeof(MvcApplication).Assembly); 
      var container = builder.Build(); 
      DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 
     } 
    } 

回答

1

ServiceStack文檔提供了一個示例here。您只需實現一個適配器即可將解析轉發到Autofac。

更新:

您可以返回容器實例您註冊服務後:

public static IContainer Initialise() 
{ 
    builder = new ContainerBuilder(); 
    builder.RegisterControllers(typeof(MvcApplication).Assembly); 
    Register types here builder.Register(x => new FormsAuthWrapper()).As<IFormsAuthentication>(); 
    builder.Register(x => new ServiceDbContext()).As<DbContext>().As<ServiceDbContext>().InstancePerHttpReques‌​t(); 
    var container = builder.Build(); 
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 
    return container; 
} 

然後你可以用這個實例來創建適配器。

IContainerAdapter adapter = new AutofacIocAdapter(Bootstrapper.Initialise()); 
container.Adapter = adapter; 
+0

是的,我試過了。但是似乎App_Start首先被執行,接着是Bootstrapper.cs,這意味着我們有兩個地方的代碼。我錯過了什麼嗎? – 2013-04-23 23:58:47

+0

@ Black-Baba這個Bootstrapper.cs的內容是什麼? – 2013-04-24 00:00:20

+0

我們的引導程序保存了初始化MVC應用程序所需的各種類的代碼。 – 2013-04-24 00:05:52

相關問題