我已經打包了一些我希望在其他項目中重用的庫,這些庫實現了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.IList1[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從我的庫中剝離出來,而不是單元測試它們,這對我沒有吸引力。
您的示例中拼寫錯誤?你好像兩次註冊'Model',但不是你的'Entities' – 2014-10-01 08:04:44