2
我有一個使用StructureMap.MVC4的MVC4應用程序。這裏的IoC.csNPoco StructureMap.MVC4構造函數注入
ObjectFactory.Initialize(x =>{
x.Scan(scan =>{
scan.TheCallingAssembly();
scan.WithDefaultConventions();});
x.For<IDbContext>().Use<EfDbContext>().Ctor<string>("connectionStringName").Is("DefaultDb");
x.For<IDatabase>().Use<Database>().Ctor<string>("connectionStringName").Is("DefaultDb");
x.For<IActionInvoker>().Use<InjectingActionInvoker>();
x.SetAllProperties(c=>c.OfType<IDbContext>());
... ...
的片段的DbContext注入正常工作,所以確實的setter注射ActionFilters,以及所有服務:使用IService默認約定。但我得到了以下錯誤試圖注入了IDatabase:
Could not find a constructor parameter or property for NPoco.Database, NPoco, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null named connectionStringName Parameter name: name
如果我將其更改爲
x.For<IDatabase>().Use(new Database("DefaultDb"));
它的工作原理。任何想法爲什麼?我想知道如果使用New,它會結束一個不同的IDatabase實例,特別是在與IDbContext實例混合時。謝謝。
我的IDbContext有一個構造函數與connectionStringName和一個構造函數與IDbConnection和工作正常。似乎IDatabase具有太多重載的構造函數。 – Whoever 2013-03-21 19:08:14