2011-10-15 76 views
0

我有一個依賴項,它使用它的靜態ServiceManager提供了一些服務。它還提供了可用類型的列表。使用Autofac提供靜態工廠導出的類型

Type[] ServiceManager.GetServiceTypes(); 
object GetService(Type t); 

在Autofac模塊中,我想枚舉這些類型並註冊它們的「動態實例化」。每次請求實例時調用ServiceManager.GetService都很重要。

回答

0

我結束了使用我自己的RegistrationBuilder,看起來很時髦,但它的作品。我錯過了一個明顯的伎倆嗎?

 foreach (var type in ServiceManager.GetServiceTypes()) 
     { 
      var rb = RegistrationBuilder.ForDelegate(
       type, 
       (ctx, parms) => ServiceManager.GetService(type)) 
       .ExternallyOwned(); 

      builder.RegisterCallback(
       cr => RegistrationBuilder.RegisterSingleComponent(cr, rb)); 
     }