2014-09-30 61 views
0

我已經打包了一些我希望在其他項目中重用的庫,這些庫實現了IOC主體,並且我使用了Autofac。Nugetpacked庫中的控制反轉 - 傳入依賴關係

當我在原始項目中創建這些庫時,即使在重新分解到新庫後,我的單元都會成功完成所有測試。

當我將這些庫添加到測試項目中以查看Nuget包是否正常工作時,我添加了我的包並且還添加了Autofac - 我連接了Autofac以注入包的依賴項 - 我也一樣在原創項目所在的地方創建。

Autofac水暖/註冊組件

 var builder = new ContainerBuilder(); 

     builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()) 
             .Where(t => t.Name.EndsWith("Service")) 
             .AsImplementedInterfaces(); 

     builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()) 
             .Where(t => t.Name.EndsWith("Model")); 

     builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()) 
             .Where(t => t.Name.EndsWith("Model")) 
             .AsImplementedInterfaces(); 


     builder.RegisterType<InquireEntities>(); 

     builder.RegisterControllers(typeof(MvcApplication).Assembly); 

     var container = builder.Build(); 

     DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 

當我試圖運行此我得到以下錯誤。
無法解析參數':

與「Autofac.Core.Activators.Reflection.DefaultConstructorFinder」上鍵入「Boxharry.Inquire.Services.DatabaseService」發現一個構造函數可以與提供的服務和參數來調用空隙.ctor構造
的」 Boxharry.Inquire.Models.InquireEntities實體(System.Collections.Generic.IList 1[Boxharry.Inquire.ViewModels.QuestionViewModel], System.Collections.Generic.IList 1 [Boxharry.Inquire.ViewModels.AnswerViewModel],boxharry.Inquire.Models.inquire_provided_answer,
System.Collections中.Generic.IList`1 [Boxharry.Inquire.ViewModels.ActivityViewModel],boxharry.Inquire.Models.inquire_user_activity_link,Boxharry.Inquire.Models.Inquire實體)」。圖書館利用

public HomeController(IDatabaseService databaseService) 
    { 
     _databaseService = databaseService; 
    } 

    // 
    // GET: /Home/ 
    public ActionResult Index() 
    { 
     var test = _activityService.GetChildActivities(290); 
     //other stuff 
    } 

我不確定如何進行,我想與Autofac玩弄的

示例註冊組件,看它是否有我做的方式被改變。

如果這不起作用,我可能必須將IOC從我的庫中剝離出來,而不是單元測試它們,這對我沒有吸引力。

+0

您的示例中拼寫錯誤?你好像兩次註冊'Model',但不是你的'Entities' – 2014-10-01 08:04:44

回答

0

我的軟件包傳入了模型的副本 - 一旦我從新項目中刪除了這個錯誤,錯誤消失了。